find方法不返回对象的最新版本。在我的代码中的某个地方,我找到一个对象,更改它,合并它,然后提交更改。在数据库中进行了更改,但是在另一个函数中,我找到了这个对象,但我的更改不在那里。我检查了竞态条件,结果是没有竞态条件。我已经检查了这个对象是否有重复或不同的ids,但它工作得很好。
有谁有主意吗?
db: mysql持久性: eclipselink
发布于 2010-09-16 22:15:42
当另一个EntityManager执行合并/提交时,您是否已经打开了一个EntityManager?陈旧的实体可能来自尚未与提交到其他位置的另一个EntityManager中的数据库的更改同步的EntityManager。
尝试在需要同步的EntityManager上调用flush()方法。
发布于 2010-09-16 23:27:16
吉姆是对的。我有两个EntittyManager不同步。我的解决方案是现在只有一个实体管理器。有没有一个很好的解决方案来让两个管理器同步,因为我有两个线程,可能两个线程都想同时开始一个事务,例如,这可能是一个问题……
https://stackoverflow.com/questions/3727204
复制相似问题