0
は、次のスキーマを考えてみましょうのみB
ここで、fieldB="someValue"
?JPA継承クエリ(Eclipseのリンク)
私は意気消沈させるために御馳走を使用しようとしましたが、B
上のフィルタは、すべての親クラス(A
)に取り組んでいるようです。
最初はこのようなクエリが可能ですか?
は、次のスキーマを考えてみましょうのみB
ここで、fieldB="someValue"
?JPA継承クエリ(Eclipseのリンク)
私は意気消沈させるために御馳走を使用しようとしましたが、B
上のフィルタは、すべての親クラス(A
)に取り組んでいるようです。
最初はこのようなクエリが可能ですか?
あなたはタイプによってフィルタリングする「タイプ」のキーワードでクエリを作成することができますし、Cエンティティをフィルタするサブクエリが存在する:
select a
from A a
where type(a) = :type
or exists (
select 1
from B b
where b.id = a.id
and b.fieldB = :fieldB
)
エンティティCのクラス型は、のsetParameterを使用メソッドを呼び出すことによって渡されますクエリインスタンス
exists節には、ANDの代わりにANDを使用する必要があります。 – Chris
クリス、私の愚かな間違いに感謝します。それを修正! –
ええ、私はこの問題をsimilerアプローチで解決しましたが、それを解決するコマンドがあります。実際に私はメインクラスを継承5クラスを持って、私は各サブクラスで2 - 3フィルタを作っている。タイプを使用するか使用するとモンスターのクエリにつながります(それは確かにパフォーマンスに影響します) –