Hibernate不一致

时间:2012-03-29 05:14:42

标签: java mysql hibernate

我正在使用Hibernate和MySql,当我启动本地服务器并传递查询时,返回的值是一致和正确的。如果我通过updateQuery更新数据库或通过打开MySql工作台手动更新数据库,那么select查询有时返回旧值,有时返回新值。这是一个已知的问题?我确保在每次选择调用之前以及任何插入/更新事务之前都有一个beginTransaction和commitTransaction。有趣的是,直到我重新启动后触摸数据库,返回的值才是完美的。

1 个答案:

答案 0 :(得分:2)

请使用已禁用的Hibernate缓存(二级缓存查询缓存)再次尝试相同的操作。要执行此操作,请在Hibernate或Spring配置中将以下属性设置为 false

  • hibernate.cache.use_query_cache
  • hibernate.cache.use_second_level_cache

这应该导致Hibernate每次都返回数据库,它应该显示数据库中的结果。请注意,Hibernate仍然使用第一级会话缓存,该缓存在会话的生命周期中使用(通常是一个事务)。除此之外,它现在应该始终进入数据库并且即使您直接在数据库中更改数据也应显示最新结果。

确定此功能后,您可以再次启用缓存并检查它们是否按设计运行。请确保交叉阅读有关缓存的Hibernate文档,尤其是各种缓存策略(只读读写,...):{{3} }