论坛首页 Java企业应用论坛

一个createQuery(hql)问题

浏览 2693 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2008-05-05  
在用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()));

在执行分页查询的时候出错的。
   发表时间:2008-05-06  
是这样的,在Hibernate中
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession();
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview

我加了这个配置,问题就好了。原文在
http://xrb2008.iteye.com/blog/152836
0 请登录后投票
   发表时间:2008-05-06  
不用 手动 关闭 session吧?
用 spring管理后, 怎么样拿到的 session 都不用 管吧?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics