我有以下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个结果所以我所做的是命令它desc并获得最大结果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();
提前致谢
答案 0 :(得分:1)
您不能在HQL中使用from子句进行子查询。它仅在select / where子句中受支持。
尝试使用本机SQL查询
(OR)转换为where子句,如下所示。
\\$
答案 1 :(得分:1)
最简单的方法是反转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);