2012-09-13 44 views
0

我有这个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代码中的排序并不是一种选择。

回答

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显示您的具体情况适当的关系(如果这种关系存在)