jpa发现问题

时间:2010-09-16 13:37:16

标签: java jpa eclipselink

find方法不返回对象的最新版本。 在我的代码中的某个地方,我找到一个对象,更改它,合并它并提交我的更改。在数据库中进行了更改,但在另一个函数中,我找到了这个对象,而我的更改不存在。 我已经检查了比赛条件,结果是没有比赛条件。 我已经检查过这个对象或不同的ID是否有重复但是工作正常。

有没有人有想法?

db:mysql 持久性:eclipselink

2 个答案:

答案 0 :(得分:1)

当另一个EntityManager执行合并/提交时,您是否已经打开了EntityManager?过时的实体可能来自尚未与其他实体管理器中的数据库提交的更改同步的EntityManager。

尝试在EntityManager上调用需要同步的flush()方法。

答案 1 :(得分:0)

吉姆是对的。我有两个不同步的EntittyManager。我的解决方案现在只有一个实体经理。是否有一个很好的解决方案让两个管理器同步,因为我有两个线程,并且两个线程可能同时开始一个事务,例如可能是一个问题......