hibernate分页查询几次后停止执行

来源:互联网 发布:musical软件 编辑:程序博客网 时间:2024/05/18 00:11

利用hibernate写了一个分页代码,一开始是运行正常的,但是点击几次下一页以后浏览器不断转圈,后台没有报错。仔细查看发现每次都是再执行第五次分页查询的时候挂掉。打印后的sql语句如下图(1,2,3,4表示当前打开的页数,后面的sql语句为分页查询的sql),可以明显的看出,当执行第四页的分页查询时,hql并没有被正确的转换成sql,也就是说浏览器一直在等待后台传过来数据,但是后台已经停止工作。


网上查找料:http://wenda.so.com/q/1372574778069009;http://bbs.csdn.net/topics/391028302;http://www.tc5u.com/java/1684165.htm

发现其他人也有遇到这个问题的,尤其是第三个链接中对这个问题进行了讨论,结合自己代码,我找到了原因。

我分页查询实现首先是单独调用了一个查询总数的方法,然后对总数进行处理得到页数等信息,再执行分页查询。

分页查询并没有什么问题,问题在于查询总数的方法忘记关掉session了,即没有执行 session.close();

添加之后,分页查询正常。至于为什么是第5次的时候挂掉,分析连接数,第4次的时候已经查询了4次总数,打开了4个连接数,第5次查询的时候新开第5个查询总数的连接,以及一个分页查询的连接,总连接数量达到了6个。查看c3p0配置文件如下:


原因找到:由于达到最大连接数,导致不能正确执行查询,所以查询完毕后一定要及时关闭连接。

0 0