无法在HQL中的子查询中使用order by

时间:2012-09-13 06:29:18

标签: sql-order-by subquery hql

我有这个HQL,我需要一个子查询。我知道按顺序制作子查询是不合法的,但我无法弄清楚如何做到这一点

SELECT OBJECT(l) FROM InboundNotification l 
 INNER JOIN l.item item 
 WHERE l.job = ? ORDER BY (SELECT SUM(itemInst.qty) 
 FROM ItemInst itemInst 
  WHERE itemInst.receivedFromNotification_id = l.id) DESC, item.localId DESC

由于我按顺序排列了子查询,因此失败了。如何重新配置​​它以便这样做?

Java代码中的排序不是一个选项,即使它几乎同样有效。

1 个答案:

答案 0 :(得分:0)

好吧,我没有hql的概念,但是我会假设它像其他查询语言一样潜入这里,因为这个问题长期以来一直没有答案。

你可以重写查询,所以它是这样的:

SELECT OBJECT(l), SUM(itemInst.qty) theSum
FROM InboundNotification l
INNER JOIN l.item item WHERE l.job = ?
INNER JOIN ItemInst on ItemInst.KEY = l.KEY
WHERE itemInst.receivedFromNotification_id = l.id)
GROUP BY OBJECT(l)
ORDER BY theSum

其中ItemInst.KEY = l.KEY显示您的情况的适当关系(如果存在这种关系)