2010-12-20 66 views
1

希望這是一個簡單的問題。如何在Hibernate中進行連接返回列表而不是二維列表?

我做的HQL沿着線聯接:

FROM Apple a, Orange o WHERE a.price = o.price AND a.price > 1.99 

當我這樣做,我回來代表參加的集合。但是,集合中的每個元素實際上是另一個包含相關蘋果和橙子的集合。

我想要的是蘋果列表,我得到的是蘋果和桔子的列表。邏輯上,我正在尋找:

All apples priced greater than 1.99 only when 
there is also an orange at the same price. 

我的實際問題是比這更復雜的50倍,但我已經簡化它的基本問題。我如何糾正/修改這個HQL查詢只給一種類型的對象?

+0

你嘗試像「選擇....蘋果」 – hvgotcodes 2010-12-20 01:39:38

回答

2

稍微修改您的查詢:

SELECT a 
FROM Apple a, Orange o WHERE ... 
+0

我試過之前張貼和它沒有工作。當我有機會時,我會再做一次併發布我得到的錯誤。我們的架構相當複雜,所以錯誤可能在其他地方,但至少知道添加select語句應該工作... – gMale 2010-12-20 01:49:23

+0

我得到一個空指針異常。結果發現,原因是我輸入了「SELECT Apple」而不是「Select a」。知道這應該,事實上,工作幫助找到問題......謝謝。 – gMale 2010-12-20 04:38:53

2

離開我的評論我去文檔後。下面是一個例子THETA從文檔

select p from NameList list, Person p 
where p.name = some elements(list.names) 

聯接如此看來你正在做,這絕對是可能的什麼

+0

感謝您的回覆。這個例子是不相關的,因爲只涉及一個對象(Cat)。我的問題在於,在連接中有兩個單獨的對象,並且兩個都正在返回,當我只希望返回列表中的一個時。 – gMale 2010-12-20 01:54:29

+0

@gmale,更新我的答案,下一個例子涉及多個對象;)。你看過HQL章嗎? ;) – hvgotcodes 2010-12-20 01:56:41

+0

我讀過很多在線HQL資源,但沒有一個真正挖掘從連接查詢返回的數據結構的細節(多維列表或不)。所以我不確定問題是來自HQL還是來自我們代碼庫中的50個其他可能的因素。原來,如果你不小心輸入了「SELECT person」而不是「SELECT p」,你會得到一個非描述性的空指針異常。在我的情況下,它沒有堆棧跟蹤,所以它讓事情變得非常混亂。感謝您花時間回覆。 +1 – gMale 2010-12-20 04:52:50

相關問題