当前位置:编程学习 > JAVA >>

Hibernate DetachedCriteria查询的问题

DetachedCriteria criteria = DetachedCriteria.forClass(User.class);
criteria.add(Restrictions.eq("username", "webmaster"));
criteria.add(Restrictions.eq("realname", "aaa"));
service.count(criteria);
service.find(criteria);

代码如上,问题是这样,DetachedCriteria不能只保存查询条件,如果我先执行统计总数,下一个方法查询列表,但是实际查询结果打印的语句还是select count(*) from User,如果把2个方法调换顺序也是不对,不知道各位遇见这个问题了么?

spring2.5.6

在网上找到遇到这个问题的人了,这么描述的。
DetachedCriteria确实实现的不是很完善,我们希望它是一个无状态的,仅保存查询条件的值对象,但实际上它做不到。一个DetachedCriteria对象反复做分页查询,第一次查询时调用的setMaxResults方法和setFirstResult方法后,这个状态保存在DetachedCriteria上了,会影响下一次count操作,因此每次查询必需new一个DetachedCriteria。同样的原因导致第一个问题交换操作顺序也不行。 --------------------编程问答-------------------- 没用过DetachedCriteria,一般用Hibernate.getTemplate()方法不可以解决了. --------------------编程问答-------------------- 大早晨的,路个过,顶个贴上班忙了。 --------------------编程问答-------------------- Hibernate.getTemplate()方法,这个好

或者spring里面也有很多 --------------------编程问答-------------------- 这个 还真用过的不多,一般都用hibernate模板里边的方法! --------------------编程问答-------------------- 还是hql吧这个用的比较多啊 --------------------编程问答-------------------- 自己搞定了,呵呵,你们用hql的,如果查询条件很多,都是用字符串拼接啊?多麻烦啊 --------------------编程问答--------------------
引用 6 楼 feiyu107 的回复:
自己搞定了,呵呵,你们用hql的,如果查询条件很多,都是用字符串拼接啊?多麻烦啊

那就说明下解决办法啊 --------------------编程问答-------------------- 只需要在查询完总数以后加上这句话 criteria.setProjection(null); 就可以了
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,