hibernate3 分页问题

linsir 发布于 2009/11/10 16:34
阅读 1K+
收藏 0

我使用Hibernate3的DetachedCriteria实现分页查询 ,获取总记录数的时候业务层代码

public Integer customerCount(DetachedCriteria detachedCriteria) {
  
  return (Integer)detachedCriteria.getExecutableCriteria(this.getSessionFactory().getCurrentSession()).setProjection(Projections.rowCount()).uniqueResult();
 }

第一次查询没错,但是第二次查询的时候得到null

加载中
0
红薯
红薯

我怀疑跟 hibernate 的 session 有关系,上面的代码使用的是 ThreadLocal 的方式存放 session ,你的第二次查询是在什么请看下执行的呢?是页面请求还是其他?

0
linsir
linsir

引用来自“红薯”的帖子

我怀疑跟 hibernate 的 session 有关系,上面的代码使用的是 ThreadLocal 的方式存放 session ,你的第二次查询是在什么请看下执行的呢?是页面请求还是其他?

 第二次查询时页面请求,

0
JavaGG
JavaGG

可否把sql打印出来看看

看看是什么样的sql

0
黄平俊
黄平俊

DetachedCriteria/Criteria实现的还不是十分完善,hibernate3.0.5,发现多次使用同一个DetachedCriteria对象后,在作rowCount projection时会出错,返回null(可前几次都返回了正确的结果)。

一次查询时调用的setMaxResults方法和setFirstResult方法后,这个状态保存在DetachedCriteria上了,会影响下 一次count操作,因此每次查询必需new一个DetachedCriteria。


0
linsir
linsir

引用来自“JavaGG”的帖子

可否把sql打印出来看看

看看是什么样的sql

 前后两次的sql是不同的。

select count(*) as y0_ from aide_customer this_ limit ?
select count(*) as y0_ from aide_customer this_ limit ?, ?

0
linsir
linsir

引用来自“Jimmy”的帖子

DetachedCriteria/Criteria实现的还不是十分完善,hibernate3.0.5,发现多次使用同一个DetachedCriteria对象后,在作rowCount projection时会出错,返回null(可前几次都返回了正确的结果)。

一次查询时调用的setMaxResults方法和setFirstResult方法后,这个状态保存在DetachedCriteria上了,会影响下 一次count操作,因此每次查询必需new一个DetachedCriteria。


 果然是这样。我先查询count在查询list就没事

0
linsir
linsir

问题终于解决了。使用hibernate在web层构造的DetachedCriteria 进行分页查询,先进行totalPage查询。完了之后将rowCount projection 设置为空在进行list查询。否则detachedCriteria 会带状态。

 

0
红薯
红薯

引用来自“linsir”的帖子

问题终于解决了。使用hibernate在web层构造的DetachedCriteria 进行分页查询,先进行totalPage查询。完了之后将rowCount projection 设置为空在进行list查询。否则detachedCriteria 会带状态。

是啊,所以你给出的代码本身是没有问题的。

0
gaozhh
gaozhh

引用来自#5楼“Jimmy”的帖子

DetachedCriteria/Criteria实现的还不是十分完善,hibernate3.0.5,发现多次使用同一个DetachedCriteria对象后,在作rowCount projection时会出错,返回null(可前几次都返回了正确的结果)。

一次查询时调用的setMaxResults方法和setFirstResult方法后,这个状态保存在DetachedCriteria上了,会影响下 一次count操作,因此每次查询必需new一个DetachedCriteria。


就因为这货,我放弃了

还是自己拼接HQL吧

返回顶部
顶部