日期:2014-05-20  浏览次数:20649 次

请高手回答:Hibernate和jdbc修改数据库更新不一致问题
我做个项目,持久层技术一部分是拿Hibernate3实现,一部分是拿JDBC实现,当我用JDBC去修改数据库(mysql)中的数据时,可拿Hibernate query.list(); 
【在query.list();代码之前之后,我都调用了session.flush();session.clear();】浏览数据时却还是没改,但进数据库一看,发现数据已经改了。我知道是Hibernate缓存弄的鬼,不知道各位大虾那位明白帮弄弄! 谢谢了

------解决方案--------------------
我觉得不是Hibernate的缓存问题,是数据库的隔离级别问题,数据库的隔离级别有未提交读,已提交读,可重复读,快照,可序列化,不知道你用的时什么数据库,不同的数据库的隔离级别不同。
Hibernate session在clear,fluse后已经发出sql语句了
要不你Commit再试试
------解决方案--------------------
在没有二级缓存的情况下,hibernate的list方法,是直接从数据库中获取数据,不会出现楼主的问题

在配置了二级缓存的查询缓存的情况下,就会出现不一致的问题,如无特殊需要,建议取消二级查询缓存的配置