我遇到一个问题,一个进程从新打开的hibernate会话接收旧数据,而该数据由另一个进程通过已提交的事务和关闭会话更新 . 如果我直接连接到数据库,我可以看到更新的数据 . Hibernate版本是 4.1.9 ,数据库是 MySQL 5.6 .

在阅读了很多类似的问题之后,我确保它没有启用's not caused neither by first level cache - new session is opened each time, nor by second level cache - it' . 我还尝试了不同的选项,如事务后的刷新会话等,但是hibernate仍然返回旧数据而不是更新 . 然后我在hibernate论坛上找到了相当老的帖子,描述了通过将 hibernate.connection.isolation 设置为2(TRANSACTION_READ_COMMITTED)修复的相同问题 . 我尝试了这种方法,它也适用于我 .

实际上,为什么Hibernate和MySQL具有默认配置需要进行此类更改的问题,有人可以解释一下吗?

附:我花了几个小时来解决这个问题,但没有找到这样的解决方案 . 这样可能会为处于相同情况的其他人节省时间 .

p.p.s在发布这个问题时,我终于找到了另一个问题 . 所以张贴了同样的问题和解决方案 . 但与此同时,还有许多其他类似的问题没有回复 . 可能会有一个帖子会给更多机会找到解决方案 .

Link to the post at hibernate forum

Link to to the similar post at SO