问题描述
大侠:两个服务器,HibernateA,HibernateB访问同一个数据库。用A修改数据,用B查询,B查询出来的始终是没有修改之前的结果,在网上看了很多帖子,尝试了各种方式,关session,清理session设置查询模式,都不行,求帮助,多谢了!查询代码如下,this.closeSession();Sessionsession=this.getSession();if(isFromDB)session.clear();Queryquery=session.createQuery(sql);if(isFromDB){session.clear();query.setCacheable(false);query.setCacheMode(CacheMode.IGNORE);}returnquery.list();
解决方案
解决方案二:
不是在查询方折腾,应该是在写入方(HibernateA服务器上)折腾。
解决方案三:
HibernateA负责写入,HibernateB负责查询,在B查询的时候已经确保数据库里面的数据改变了,但是查询出来就是旧的数据!!
解决方案四:
该回复于2011-03-07 10:16:37被版主删除
解决方案五:
引用3楼zhuzhu837的回复:
http://hi.baidu.com/cmgdxnh/blog/item/e84b284321aa92029313c684.html
垃圾广告!!!!
解决方案六:
坐等答案
解决方案七:
看看你是几级缓存的问题
解决方案八:
应该是缓存的问题!
解决方案九:
除了这些清理方式还有别的吗?
解决方案十:
从你的问题中,直接就可以知道,你的所说的A并没有修改完成DB中的数据很简单HibernateB是直接从DB中出来的,并不是凭空产生的,所以,你不用看HibernateB查询的结果,你只需要查看HibernateA修改的数据有没有真正提交。
解决方案十一:
引用9楼shagan的回复:
从你的问题中,直接就可以知道,你的所说的A并没有修改完成DB中的数据很简单HibernateB是直接从DB中出来的,并不是凭空产生的,所以,你不用看HibernateB查询的结果,你只需要查看HibernateA修改的数据有没有真正提交。
我提交完之后打开数据看数据已经修改了,这个算真正提交吗?
解决方案十二:
引用10楼xiaoniaojjj的回复:
我提交完之后打开数据看数据已经修改了,这个算真正提交吗?
还没有解决吗?你是说写入端程序提交后,你手工打开数据库,看到数据已经提交了?如果这样,那写入端程序才应该是没有问题的。然后查询端程序就是看不到新数据?
解决方案十三:
有没有Commit?
解决方案十四:
1:session缓存设置问题2:可以直接写sql给hibernate直接查看结果变了没。