在用Hibernate进行分页时,在进入前5页都很正常。在查询第6页的时候就像死机了一样。怎么也不动。
代码如下:
int totalRows = ((Integer)this.getSession().createQuery("select count(*) " + hql).uniqueResult()).intValue();    //查询总页数
  PaginationSupport page = new PaginationSupport(arealist, totalRows, currentPage);  //实现分页
  arealist.add(this.getListForPage(hql, (currentPage-1)*page.getPageSize(), page.getPageSize()));  //分页查询 


分页查询
public List getListForPage(final String hql, final int offset,
	     final int length) { 
	List list = getHibernateTemplate().executeFind(new HibernateCallback() {
	     public Object doInHibernate(Session session)
	     throws HibernateException, SQLException {
	     Query query = session.createQuery(hql);
	     query.setFirstResult(offset);
	     query.setMaxResults(length);
	     List list = query.list();
	     return list;
	     }
	});
	return list;
	}


在第六次查询时,在这里不动了。后台也没有错误出现。
arealist.add(this.getListForPage(hql, (currentPage-1)*page.getPageSize(), page.getPageSize()));

在执行分页查询的时候出错的。
评论
shanglo 2008-05-06
不用 手动 关闭 session吧?
用 spring管理后, 怎么样拿到的 session 都不用 管吧?
kane82 2008-05-06
是这样的,在Hibernate中
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession();
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview

我加了这个配置,问题就好了。原文在
http://xrb2008.javaeye.com/blog/152836
kane82
搜索本博客
博客分类
最近加入圈子
存档
最新评论