私が3つの抽象的なスーパークラスを持っていると仮定しましょう:SuperA
、、。これらのスーパークラスのそれぞれに、より具体的な実装がたくさんあり、すべてのスーパークラスに。という注釈が付けられているとします。SuperB
SuperC
@Inheritance(strategy = InheritanceType.JOINED)
より具体的に:
Aa
<-そして(プロパティ)SuperA
のリストがあります。SuperB
bbs
Bb
<-そして(プロパティ)SuperB
のリストがあります。SuperC
ccs
Cc
<-SuperC
そしてfoo
プロパティがあります。
foo
次に、次のようなクエリを実行すると、タイプ内のプロパティが見つからないというエラーが発生しましたSuperC
。Bb
抽象型のリストがあり、それを変更することはできません。そのため、クエリを機能させる方法がわかりません。
select a from Aa a left outer join a.bbs b where b.ccs.foo = :foo
どんなヒントでも役に立ちます。前もって感謝します。
編集:
ところで:例外:
org.hibernate.exception.SQLGrammarException: Unknown column 'cc3_1_.foo' in 'where clause'
編集2:
JPAドキュメントを探して、Hibernateを使用していない場合に機能するものを見つけました。
編集3:
2つのSQLを使用するように変更します。まず、プロパティに基づいてCのIDを見つけ、foo
次にIDと比較してクエリを実行します。
ここでの問題は、これが必要になるたびに2つのSQLを実行する必要があることです...しかし、少なくともそれは機能します。