2012-09-13 68 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顯示您的具體情況適當的關係(如果這種關係存在)