跪求各位大侠,我在做Dwr+spring+hibernate项目时,分页如下,一两次点击上一页、下一页、首页、尾页时得到的结果是正确的,但在多点击几次,程序走到list=qy.list()这块,卡住获取不到list程序也不往下走,网上找了好多资料说是缓存的问题,但折腾了好几夜,还是不行。跪求各位大侠,急用。谢谢了。
Session session=this.getSession();
String sql=pageParams.getSql();
Query qy=session.createQuery(sql);int offset=(pageParams.getPageNumber()-1)*pageParams.getPageSize();
qy.setFirstResult(offset);
qy.setMaxResults(pageParams.getPageSize());list=qy.list();

解决方案 »

  1.   

    这种情况,把SQL日志打开(要能显示参数值的),或者每次都把参数值用日志详细记录下来,然后再看是怎么回事。
    另一种情况是你不会代码里面没有关Session吧?
      

  2.   

    qy.setMaxResults(pageParams.getPageSize());//    
            session.close();
    list=qy.list();
    session关闭了以后,DWR获取的数据就不对了
      

  3.   

    每次查找完就要把session关闭了。 。
      

  4.   

    查询完后,我如果把session关闭了,DWR取数据时报,字段名为空,或是不存在。
      

  5.   


    顺序错了,close() 放在后面。
    list=qy.list();
    session.close();
      

  6.   

    另外,为了保险,close()一般放在finally里面,类似:
    Session session=this.getSession();
    try {
      // 其它所有代码
    } finally {
      session.close();
    }
      

  7.   

    不管怎么关闭后,DWR取的数据就变成NULL了
      

  8.   

    跟数据库无关,看起来更像是Hibernate的配置问题,没有把所有数据取到List中,导致关闭Session就取不到数据了。