大侠:
两个服务器,HibernateA, HibernateB访问同一个数据库。
用A修改数据,用B查询,B查询出来的始终是没有修改之前的结果,在网上看了很多帖子,尝试了各种方式,关session,清理
session设置查询模式,都不行,求帮助,多谢了!
查询代码如下,
this.closeSession();
Session session = this.getSession();
if(isFromDB)
  session.clear();
  Query query = session.createQuery(sql);
  if (isFromDB)
  {
session.clear();
  query.setCacheable(false);
  query.setCacheMode(CacheMode.IGNORE);
  }
return query.list();

解决方案 »

  1.   

    不是在查询方折腾,应该是在写入方(HibernateA服务器上)折腾。
      

  2.   

    HibernateA 负责写入,HibernateB 负责查询,在B查询的时候已经确保数据库里面的数据改变了,但是查询出来就是旧的数据!!
      

  3.   

    看看你是几级缓存的问题
    http://www.360doc.com/content/10/0407/10/1158044_21911359.shtml
      

  4.   

    从你的问题中,直接就可以知道,你的所说的A并没有修改完成DB中的数据
    很简单HibernateB是直接从DB中出来的,并不是凭空产生的,
    所以,你不用看HibernateB查询的结果,你只需要查看HibernateA修改的数据有没有真正提交。
      

  5.   

    1:session缓存设置问题
    2:可以直接写sql给hibernate直接查看结果变了没。