用hibernate分页时记得关session!要不然会有很多有意思的错误。。。

今天终于开始做以前一直以为很难的分页,google了下,发现hibernate分页也太简单了。。。这是网上找到的代码:

Query q = session.createQuery("from Cat as c"); 
q.setFirstResult(20000);   
q.setMaxResults(100);  
List l = q.list();

先是找了半天怎么获取这个session。。。搜了一圈搜到了sessionfactory这个关键字,猛然想到spring的配置文件里貌似有这么个bean,试着直接用getSession,真的就获得了这个session~

我承认我没怎么看书。。。因为项目时间比较紧,没时间一点一点的学。过程中我就发现了,其实磨刀不误砍柴工是真理。。。只不过,刚接到项目的时候总有种紧迫感,没法安心学习。。。

继续说,我直接把上面那段代码的session改成了getSession(),结果可想而知。。。不过当时的我还蒙在鼓里。我总是以为SSH2能自动智能的帮我打理一切。。。接着我就去测试了,写完jquery的ajax函数,一测试,OK,一个响指,出实验室放松了一圈。回来继续改jquery的生成代码,改完刷新,改完刷新,突然,在某次刷新的时候出现了问题!jquery获得不了json数据了!甚至其他页面的正常struts action访问都得不到结果!我又一顿猛搜,以为是jquery的问题,倒是查到了一些jquery的小bug。。。不过断然解决不了我的问题。

我又以为是浏览器问题(之前一直因为MSIE的特殊性和娇嫩。。。一直用IE8在测试)换了遨游3,发现压根就登陆不了主页。。。漫长的等待后报错:

IllegalStateException: The configuration manager shouldn 't be null

天啊,都不合法了。。。我甚至产生了如果老师检查的时候不刷新8遍以上我是不是能过验收的恐怖想法。问题还是要解决的!我学习一休哥,开始了思考。。。

结果就是这么突然,我想到了可能是action里出问题了,但是之前没问题,只修改了dao层,那么必然问题出在了那里!再一看getSession()?这么敏感脆弱的session我居然没有细心呵护。。。导致了他和他未关闭的同伴们发生了拥挤踩踏事件。。。

最终结果如下:

public List
  
  
   
    ListDevice(
   
   int page,
   
   int records) {
  
  
    Session session = getSession();
    Query q = session.createQuery("from DeviceModel");
    q.setFirstResult(page*records);
    q.setMaxResults(records);
    List
  
  
   
    list = (List
   
   
    
    ) q.list();
   
   
  
  
    session.close();
    return list;
}

问题就这么突兀的解决了~可以尽情的刷新了。我想好了,给老师看的时候说一句:这个页面你可以多刷几次,显示的数据绝对不会突然消失,哈哈~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值