Java hibernate中事务中的延迟更新导致问题
在hibernate事务中,我正在更新一行(通过Java hibernate中事务中的延迟更新导致问题,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,在hibernate事务中,我正在更新一行(通过session.update(domainObject)),然后在同一个表上执行select count(*),并在另一个表上执行一个where条件。我观察到(通过日志)更新操作发生在事务结束时,因此应该在更新查询显示错误结果后执行select查询。我不明白为什么会这样。任何线索?当您执行选择时,持久性提供程序将确定是否应刷新以前在同一事务中执行的CRUD操作 这是为了确保返回的结果是正确的 理论上,当您进行包含对在当前会话中修改的实体的引用的选择
session.update(domainObject)
),然后在同一个表上执行select count(*)
,并在另一个表上执行一个where条件。我观察到(通过日志)更新操作发生在事务结束时,因此应该在更新查询显示错误结果后执行select查询。我不明白为什么会这样。任何线索?当您执行选择时,持久性提供程序将确定是否应刷新以前在同一事务中执行的CRUD操作
这是为了确保返回的结果是正确的
理论上,当您进行包含对在当前会话中修改的实体的引用的选择时,应该进行刷新
您可能希望尝试:
a)将刷新模式设置为:
。
这应该是默认值,但您可能会覆盖它。这是为了确保:
有时在执行查询之前刷新会话,以便
确保查询永远不会返回过时状态
b)将刷新模式设置为:
注意这一点,因为:
在每次查询之前刷新会话
c)在该查询之前执行手动session.flush()
(最后手段)