Jpa eclipselink merge()不带初始选择
我正在尝试使用eclipselink执行一个Jpa eclipselink merge()不带初始选择,jpa,jpa-2.0,eclipselink,Jpa,Jpa 2.0,Eclipselink,我正在尝试使用eclipselink执行一个合并(实体),我想向eclipse表明这是一个更新还是插入,因此它不必执行初始的select查询。由于在这方面取得的进展,我有以下几点: UnitOfWorkImpl uow = (UnitOfWorkImpl) ((EntityManagerImpl) em.getDelegate()).getUnitOfWork(); if (dbObj.isInDB()) { uow.updateObject(dbObj); } else {
合并(实体)
,我想向eclipse表明这是一个更新还是插入,因此它不必执行初始的select查询。由于在这方面取得的进展,我有以下几点:
UnitOfWorkImpl uow = (UnitOfWorkImpl) ((EntityManagerImpl) em.getDelegate()).getUnitOfWork();
if (dbObj.isInDB())
{
uow.updateObject(dbObj);
}
else
{
uow.insertObject(dbObj);
}
AbstractSession session = ((EntityManagerImpl) em.getDelegate()).getUnitOfWork().getParent();
if (dbObj.getLastModifiedTime().isAfter(lastUpdated))
{
if (dbObj.isInDB())
{
session.updateObject(dbObj);
}
else
{
session.insertObject(dbObj);
}
}
但是,我得到了以下信息:
UnitOfWorkImpl uow = (UnitOfWorkImpl) ((EntityManagerImpl) em.getDelegate()).getUnitOfWork();
if (dbObj.isInDB())
{
uow.updateObject(dbObj);
}
else
{
uow.insertObject(dbObj);
}
AbstractSession session = ((EntityManagerImpl) em.getDelegate()).getUnitOfWork().getParent();
if (dbObj.getLastModifiedTime().isAfter(lastUpdated))
{
if (dbObj.isInDB())
{
session.updateObject(dbObj);
}
else
{
session.insertObject(dbObj);
}
}
org.eclipse.persistence.exceptions.QueryException:
异常描述:在UnitOfWork期间无法写入对象,必须注册它们。
查询:UpdateObject查询
我的方法正确吗?如果是,我如何更正错误
感谢感谢回答的作者,工作解决方案如下,跟踪自己进入数据库的内容,“他们”是eclipselink实体经理:
UnitOfWorkImpl uow = (UnitOfWorkImpl) ((EntityManagerImpl) em.getDelegate()).getUnitOfWork();
if (dbObj.isInDB())
{
uow.updateObject(dbObj);
}
else
{
uow.insertObject(dbObj);
}
AbstractSession session = ((EntityManagerImpl) em.getDelegate()).getUnitOfWork().getParent();
if (dbObj.getLastModifiedTime().isAfter(lastUpdated))
{
if (dbObj.isInDB())
{
session.updateObject(dbObj);
}
else
{
session.insertObject(dbObj);
}
}