2011-10-21 37 views
1

我有一個關於JPQL的問題。我需要在同一個實體上加入實體。 Entity.child_id被映射爲JPA實體類中的一個集合,即實體具有一個擁有每個孩子的集合屬性(「children」)。加入精緻與此集合作品(不知道爲什麼,順便說一句),例如:JPA加入實體在同一個實體

SELECT parent.id, child FROM Entity parent JOIN parent.children child 

的問題是,有沒有辦法來寫這個查詢沒有聯接,這樣的事情:

SELECT parent.id, child FROM Entity parent, Entity child WHERE <condition> 

我不知道如何構造一個條件。 「parent.children = child」不起作用 - 左側是集合,右側是單個實體。我想,應該使用像「孩子IN(parent.children)」這樣的東西,但我不知道如何完全做到這一點。我需要它,因爲我無法將通用連接與另一個連接組合成更復雜的查詢。 在此先感謝!

回答

0

好吧,我會回答自己。

1路:

SELECT parent.id, child FROM Entity parent, IN(parent.children) child 

第二個辦法:

SELECT parent.id, child FROM Entity parent, Entity child WHERE child MEMBER OF parent.children 

只有第二個查詢是極其危險的,它會產生非常沉重的交叉聯接SQL查詢與。 如果有人有更好的解決方案 - 如果你分享,我真的會感到沮喪,但我還沒有解決整個任務。