gpt4 book ai didi

java - hibernate 中事务中的惰性更新会产生问题

转载 作者:行者123 更新时间:2023-11-30 05:41:20 26 4
gpt4 key购买 nike

在 hibernate 事务中,我正在更新一行(通过 session.update(domainObject)),然后使用 where 条件执行 select count(*)同一张表以及其他表上的联接。我观察到(通过日志)是更新操作发生在事务结束时,因此应该在更新查询之后执行的选择查询显示不正确的结果。我无法理解为什么会发生这种情况。有线索吗?

最佳答案

当您执行SELECT时,持久化提供程序确定是否应该刷新之前在同一事务中执行的 CRUD 操作。

这是为了确保返回的结果是正确的。

理论上,当您执行的 SELECT 包含对当前 session 中已修改的实体的引用时,应该会发生刷新。

您可能想尝试:

a) 将冲洗模式设置为:<property name="org.hibernate.flushMode" value="AUTO"/> 。 这应该是默认值,但您可以覆盖它。这是为了确保:

The Session is sometimes flushed before query execution in order to ensure that queries never return stale state.

b) 将冲洗模式设置为:<property name="org.hibernate.flushMode" value="ALWAYS"/> .

请小心:

The Session is flushed before every query.

c) 制作手册 session.flush()在该查询之前(最后的手段)

关于java - hibernate 中事务中的惰性更新会产生问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55568200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com