是否可以(不编写自定义SQL)让Eclipselink信任我是否在合并上执行更新或插入,而不是执行选择,然后执行更新或插入?如果是这样,怎么样?
在我看来,我想使用瞬态标志和自定义if语句来确定该项是否已经在数据库中,并指示eclipselink执行所需的查询.我理解Hibernate提供了这个作为update()和save()
一些值得注意的要点:
谢谢.也许我错过了一些明显的东西!
我正在尝试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)我接近这个正确的方法吗?如果是这样,我该如何纠正错误?
谢谢