我遇到一个问题,即进程从新打开的hibernate会话接收旧数据,而该数据由另一个进程通过已提交的事务和关闭会话更新。如果我直接连接到数据库,我可以看到更新的数据。 Hibernate版本为4.1.9
,数据库为MySQL 5.6
。
在阅读了很多类似的问题后,我确保它不是由第一级缓存引起的 - 每次都打开新会话,也不是二级缓存 - 它没有启用。我还尝试了不同的选项,如事务后的刷新会话等,但是hibernate仍然返回旧数据而不是更新。然后我在hibernate论坛上找到了相当老的帖子,描述了通过将 hibernate.connection.isolation 设置为2(TRANSACTION_READ_COMMITTED)修复的相同问题。我尝试了这种方法,它也适用于我。
实际上,为什么Hibernate和MySQL具有默认配置需要进行此类更改的问题,有人可以解释一下吗?
P.S。我花了几个小时来解决这个问题,但没有找到这样的解决方案。这样可能会为处于相同情况的其他人节省时间。
p.p.s在发布这个问题时,我终于找到了另一个问题。所以张贴了同样的问题和解决方案。但与此同时,还有许多其他类似的问题没有回复。可能会有一个帖子会给更多机会找到解决方案。