我有以下的hql查询:
JgrelhasListBack = session.createQuery("from Jgrelhas where jtabuleiros.id=? and id<? order by id desc").setParameter(0, tabuleiroId).setParameter(1, grelhaId).setMaxResults(limitenovo).list();我需要得到最后5个结果,所以我所做的是命令它,得到最大的结果5。但我需要它由Asc.
我找到了一个解决方案,就是这样进行查询:
SELECT * FROM (
SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC我试图在hql中复制它,但没有成功:
JgrelhasListBack = session.createQuery("select (select Jgrelhas from Jgrelhas where jtabuleiros.id=? and id<? order by id desc ) from Jgrelhas order by id asc").setParameter(0, tabuleiroId).setParameter(1, grelhaId).setMaxResults(limitenovo).list();提前感谢
发布于 2015-09-04 15:51:19
最简单的方法是反转desc顺序列表:
List jgrelhasListBack = session.createQuery("from Jgrelhas where jtabuleiros.id=? and id<? order by id desc")
.setParameter(0, tabuleiroId)
.setParameter(1, grelhaId)
.setMaxResults(limitenovo)
.list();
return java.util.Collections.reverse(jgrelhasListBack);发布于 2015-09-04 14:44:39
您不能在HQL中使用from子句执行子查询。只支持select/where子句。
要么尝试通过本机SQL查询
(或)转换为where子句如下所示。
select Jgrelhas from Jgrelhas
where id IN
(select id from Jgrelhas
where jtabuleiros.id=? and id<? order by id desc )
order by id aschttps://stackoverflow.com/questions/32399888
复制相似问题