/**
  * 分布查询
  * @param pageNum 当前页码
  * @param pageCount 每页显示的条数
  * @param hql 要执行的hql查询语句
  */
 public List listByPage(int pageNum, int pageCount, String hql) {
  Session session = null;
  List list = null;
  try{
  session = super.getSession();
  //session.clear();
  Query query = session.createQuery(hql);
  //query.setCacheable(false);
  int firstResultIndex = pageCount * (pageNum - 1);
  query.setFirstResult(firstResultIndex);
  query.setMaxResults(pageCount);
  list = query.list();
  }catch(Exception e){
   e.printStackTrace();
  }finally{
   //session.flush();
   session.clear();
   session.disconnect();
   HibernateSessionFactory.closeSession();
   session = null;
  }
  return list;
 }这是我写的一个分页查询
当查询完数据,更新数据库内容后,再次查询的时候,查询的数据还是第一次查询的数据内容,不过偶尔会是新数据,初步怀疑是 session缓存的问题,还请哪位大虾指点下.    拜谢了

解决方案 »

  1.   

    不同的session 那就只有可能是二级缓存
    你配置了二级缓存了吗? 不行的话 你清除了试试
      

  2.   

    建议楼主做如下测试:
    直接在数据库中做相应的查询,看结果是否和用session查询结果一致。
      

  3.   

    是不是配置了我现在还不能确定,自动生成的 *.hbm.xml,会自动配置二级缓存吗?
    再就是我查询的时候,session已经关了,也清空了呀,为什么不起作用呢
      

  4.   

    LZ  在确定分页逻辑没错的情况下
    session = super.getSession();换成
    session=this.getSession(true);试试看...
      

  5.   

    一共不是一个session吗,应该获取的是一个吧
      

  6.   

    没有配置呀,sql语句都执行了呢
      

  7.   

    把你配置hibernate的xml文件发出来看看
      

  8.   

    会不会是你的值传的不正确呢?最好debug一下