Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate中事务中的延迟更新导致问题_Java_Hibernate_Jpa_Orm - Fatal编程技术网

Java hibernate中事务中的延迟更新导致问题

Java hibernate中事务中的延迟更新导致问题,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,在hibernate事务中,我正在更新一行(通过session.update(domainObject)),然后在同一个表上执行select count(*),并在另一个表上执行一个where条件。我观察到(通过日志)更新操作发生在事务结束时,因此应该在更新查询显示错误结果后执行select查询。我不明白为什么会这样。任何线索?当您执行选择时,持久性提供程序将确定是否应刷新以前在同一事务中执行的CRUD操作 这是为了确保返回的结果是正确的 理论上,当您进行包含对在当前会话中修改的实体的引用的选择

在hibernate事务中,我正在更新一行(通过
session.update(domainObject)
),然后在同一个表上执行
select count(*)
,并在另一个表上执行一个where条件。我观察到(通过日志)更新操作发生在事务结束时,因此应该在更新查询显示错误结果后执行select查询。我不明白为什么会这样。任何线索?

当您执行
选择时,持久性提供程序将确定是否应刷新以前在同一事务中执行的CRUD操作

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

理论上,当您进行包含对在当前会话中修改的实体的引用的选择时,应该进行刷新

您可能希望尝试:

a)将刷新模式设置为:
。 这应该是默认值,但您可能会覆盖它。这是为了确保:

有时在执行查询之前刷新会话,以便 确保查询永远不会返回过时状态

b)将刷新模式设置为:

注意这一点,因为:

在每次查询之前刷新会话

c)在该查询之前执行手动
session.flush()
(最后手段)