我有这个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代码中的排序不是一个选项,即使它几乎同样有效。
答案 0 :(得分:0)
你可以重写查询,所以它是这样的:
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
显示您的情况的适当关系(如果存在这种关系)