使用JPA Hibernate 5.0.3的Spring两次执行相同的更新查询,首先使用更新的值,然后使用旧的值

时间:2019-09-12 21:24:52

标签: java spring hibernate jpa

我在JPA2和休眠版本5.0.3-final中使用Spring(非引导)4.1.1。 我们观察到的是,在JMS侦听器从AWS SQS收到消息的特定流程中,有99%的事务执行3个更新查询来更新数据库,但是在1%的情况下,在这3个查询之后,它执行相同的3个使用较旧的值再次查询,从而导致值的触发器。有时这三组查询间隔几秒钟,有时几分钟。最初我们以为可能是对此方法的另一次调用导致了这种情况,但是我们的日志文件中始终只有一组日志可用。我怀疑这与保持会话状态的线程有关,但不确定,因为我之前从未在休眠状态下看到过这种情况。 根据最近的观察,这仅在更新查询中发生。

1 个答案:

答案 0 :(得分:0)

这是由另一个在同一实体上调用merge()并导致重新加载自身及其某些子代的流引起的。