实体管理器在合并后找到

问题描述

我们面临一个错误,该错误并不总是发生在我们的应用程序中,它发生在我们在更新实体后使用实体管理器查找时,由于某种原因它正在检索过时的实体版本。

发生这种情况是因为事务需要时间来提交更改吗?为什么它不总是发生?

获取实体并根据主键更新它的代码

$

另一种方法更新后的代码(同一个订单id):

\n

有时会抛出异常,表示订单状态尚未更改。

我们使用 JTA 与 weblogic 和 Eclipse 持久性作为 JPA 实现。

如果有人知道可能导致这种情况的原因,我将不胜感激,如果需要任何额外信息,请随时提出。

解决方法

这两个方法是否在同一个事务中?如果没有,当您调用第二个方法时,第一个事务可能没有提交。 第二个要验证的,是缓存,有可能你默认实现了二级缓存,会导致这样的错误。