hibernate3 分页问题
我使用Hibernate3的DetachedCriteria实现分页查询 ,获取总记录数的时候业务层代码
public Integer customerCount(DetachedCriteria detachedCriteria) {
return (Integer)detachedCriteria.getExecutableCriteria(this.getSessionFactory().getCurrentSession()).setProjection(Projections.rowCount()).uniqueResult();
}
第一次查询没错,但是第二次查询的时候得到null
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
引用来自“linsir”的帖子
问题终于解决了。使用hibernate在web层构造的DetachedCriteria 进行分页查询,先进行totalPage查询。完了之后将rowCount projection 设置为空在进行list查询。否则detachedCriteria 会带状态。
引用来自#5楼“Jimmy”的帖子
DetachedCriteria/Criteria实现的还不是十分完善,hibernate3.0.5,发现多次使用同一个DetachedCriteria对象后,在作rowCount projection时会出错,返回null(可前几次都返回了正确的结果)。
一次查询时调用的setMaxResults方法和setFirstResult方法后,这个状态保存在DetachedCriteria上了,会影响下 一次count操作,因此每次查询必需new一个DetachedCriteria。
问题终于解决了。使用hibernate在web层构造的DetachedCriteria 进行分页查询,先进行totalPage查询。完了之后将rowCount projection 设置为空在进行list查询。否则detachedCriteria 会带状态。
引用来自“Jimmy”的帖子
DetachedCriteria/Criteria实现的还不是十分完善,hibernate3.0.5,发现多次使用同一个DetachedCriteria对象后,在作rowCount projection时会出错,返回null(可前几次都返回了正确的结果)。
一次查询时调用的setMaxResults方法和setFirstResult方法后,这个状态保存在DetachedCriteria上了,会影响下 一次count操作,因此每次查询必需new一个DetachedCriteria。
DetachedCriteria/Criteria实现的还不是十分完善,hibernate3.0.5,发现多次使用同一个DetachedCriteria对象后,在作rowCount projection时会出错,返回null(可前几次都返回了正确的结果)。
一次查询时调用的setMaxResults方法和setFirstResult方法后,这个状态保存在DetachedCriteria上了,会影响下 一次count操作,因此每次查询必需new一个DetachedCriteria。
可否把sql打印出来看看
看看是什么样的sql
引用来自“红薯”的帖子
我怀疑跟 hibernate 的 session 有关系,上面的代码使用的是 ThreadLocal 的方式存放 session ,你的第二次查询是在什么请看下执行的呢?是页面请求还是其他?
我怀疑跟 hibernate 的 session 有关系,上面的代码使用的是 ThreadLocal 的方式存放 session ,你的第二次查询是在什么请看下执行的呢?是页面请求还是其他?