2011-10-21 7 views
1

JPQLに関する質問があります。同じエンティティでエンティティに参加する必要があります。 Entity.child_idはJPAエンティティクラスのコレクションとしてマッピングされます。つまり、エンティティにはすべての子を保持するコレクションプロパティ( "children")があります。質問は、JOINをせずに、このクエリを記述することが方法です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"は機能しません - 左側はコレクションで、右側は単一のエンティティです。 「child IN(parent.children)」のようなものを使用しなければならないと思いますが、これを正確に行う方法はわかりません。より複雑なクエリでは、一般的な結合と他の結合を組み合わせることができないため、必要です。 ありがとうございます!

答えて

0

[OK]を、私は自分自身に答えるでしょう。

第一の方法:

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 

のみ第二のクエリは、それがINと非常に重いクロス加入SQLクエリを生成し、非常に危険です。 誰かがより良い解決策を持っているなら、私が本当に分かっていれば分かりますが、私はまだ全課題を解決していません。

関連する問題