私は3つのエンティティを別のエンティティから継承しています。私は、例えばSINGLE_TABLE戦略Hibernateは単一継承のFetchTypeを無視します
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
を使用してい クラスB、CおよびDはAから継承します
エンティティBでは、別のエンティティXを熱心に読み込んでいます。残念ながら、Hibernateは私の注釈を無視し、実体X.
@ManyToOne(fetch=FetchType.EAGER)
private Projekt projekt;
をフェッチするためにB各エンティティの選択を作成し、次のように私のselect文に見えます:A'から 'selectのA
いくつかのより多くのコード例:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DType", discriminatorType = DiscriminatorType.STRING, length = 3)
public abstract class A {}
@Entity
@DiscriminatorValue(B.PREFIX)
public class B extends A {
@ManyToOne(fetch=FetchType.EAGER)
private Projekt projekt;
}
は、今私はそれがないAからinheriteすべてのクラスを照会するために休止状態を期待しています。残念ながら、私は回避したい "projekt"を照会するために各結果行に対してselectステートメントも実行します。
SELECT文があります有効なJPQLではありません。あなたは "a a from a a"ではないと確信していますか? Hibernateがselectを生成して各Bに対してXをフェッチする場合、アノテーションは無視されません。Xは賢くフェッチされます。 –
ありがとう、私は例を変更しました。私はできるだけ簡単にしようとしました。 – Daniel