Chr*_*ell 2 jpa eclipselink jpa-2.0
我正在尝试merge(entity)使用eclipselink,我想指示eclipse是否是更新或插入,因此它不必执行初始选择查询.由于这个问题的进展,我有以下几点:
UnitOfWorkImpl uow = (UnitOfWorkImpl) ((EntityManagerImpl) em.getDelegate()).getUnitOfWork();
if (dbObj.isInDB())
{
uow.updateObject(dbObj);
}
else
{
uow.insertObject(dbObj);
}
Run Code Online (Sandbox Code Playgroud)
org.eclipse.persistence.exceptions.QueryException: Exception Description: Objects cannot be written during a UnitOfWork, they must be registered. Query: UpdateObjectQuery
merge(entity)我接近这个正确的方法吗?如果是这样,我该如何纠正错误?
谢谢
感谢这里答案的作者,工作解决方案如下,跟踪自己进入数据库的内容,其中'em'是eclipselink实体管理器:
AbstractSession session = ((EntityManagerImpl) em.getDelegate()).getUnitOfWork().getParent();
if (dbObj.getLastModifiedTime().isAfter(lastUpdated))
{
if (dbObj.isInDB())
{
session.updateObject(dbObj);
}
else
{
session.insertObject(dbObj);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
464 次 |
| 最近记录: |