hql 先排序 再limit 解决方法 (求教)

如题!谢谢!

2个回答

先 order by 再 limit

cwanglu
cwanglu 谢谢 呵呵!找到原因了!
7 年多之前 回复
zyn010101
zyn010101 你把hibernate的show_sql打开,看下下面打印的sql
7 年多之前 回复
cwanglu
cwanglu hql 是传进来的参数 hql 先写的是order by 然后执行下面的 但是先执行的limit 才执行 orderby的 Query q=this.createQuery(hql); //查询总记录数 long count=this.getCout(hql, args); for (int i = 0; i < args.length; i++) { q.setParameter(i, args[i]); } //设置起始值 q.setFirstResult((page.getPage()-1)*page.getRecords()); //设置查询的条数 q.setMaxResults(page.getRecords()); List rows=q.list(); page.setRows(rows); page.setTotalCount(count); return page;
7 年多之前 回复

[quote]hql 是传进来的参数 hql 先写的是order by 然后执行下面的 但是先执行的limit 才执行 orderby的
Query q=this.createQuery(hql);
//查询总记录数
long count=this.getCout(hql, args);

for (int i = 0; i < args.length; i++) {
q.setParameter(i, args[i]);
}
//设置起始值
q.setFirstResult((page.getPage()-1)*page.getRecords());
//设置查询的条数
q.setMaxResults(page.getRecords());[/quote]
按道理直接order by,再设limit,不会出现你说的情况的啊。。

[code="java"]hql = "from User u where u.age =:age order by u.name desc";
Query q=this.createQuery(hql);
q.setParameter("age", 10);
q.setFirstResult((page.getPage()-1)*page.getRecords());
q.setMaxResults(page.getRecords());[/code]

cwanglu
cwanglu 恩恩 !那个是对的!是我又晕了!搞错了!呵呵 谢谢你啊!看来得多改改粗心的毛病了!
7 年多之前 回复
aa1aa3
爱上一条鱼 findByCriteria(DatechedCriria d,int first,int rows) 直接就有first和max了。。我项目里好像用的是这个
7 年多之前 回复
aa1aa3
爱上一条鱼 hibernate生成的sql是啥样的。。。
7 年多之前 回复
aa1aa3
爱上一条鱼 不是吧。。。你看这个 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html#querycriteria-ordering
7 年多之前 回复
cwanglu
cwanglu 是的 我是这样写的 我上面的c 就是detachedCriteria ?但是数据并不是先执行的排序!
7 年多之前 回复
aa1aa3
爱上一条鱼 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); detachedCriteria.addOrder(Order.asc(propertyName)); 这样不行么
7 年多之前 回复
cwanglu
cwanglu c.addOrder(Order.desc("opDate"));用这个是吧!
7 年多之前 回复
cwanglu
cwanglu 能具体说一下吗? 我设置order 不管用啊 明显的还是先执行的分页查询 才执行的 排序!
7 年多之前 回复
aa1aa3
爱上一条鱼 可以的,Criteria里可以设的
7 年多之前 回复
cwanglu
cwanglu 呵呵 还是谢谢你啊!我想问个问题啊!hibernate 的Criteria 的排序 是不是只能对查询出的结果才能排序?先执行排序 然后采用分页这个效果 用Criteria可以做吗?
7 年多之前 回复
aa1aa3
爱上一条鱼 哈哈 没事干就上上问答~
7 年多之前 回复
cwanglu
cwanglu 呵呵 你又来了哦!谢谢啊!我刚才找了 是我弄错了 时间上有问题!我说我想要的那几条没出来!呵呵 还是谢谢你了!
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!