JPAとの双方向の0対1の関連付けを実装したいと思います。今のところ、次のスニペットを使用します。
@Entity
class A {
...
@OneToOne(fetch = FetchType.EAGER, optional = true)
@PrimaryKeyJoinColumn
private B a;
...
}
@Entity
class B {
...
@OneToOne(fetch = FetchType.EAGER, optional = true)
@PrimaryKeyJoinColumn
private A a;
...
}
問題は、エンティティAをロードしようとすると、エンティティBのロードに使用されるフェッチタイプ戦略が体系的に「FetchType.SELECT」であるということです。見つかったエンティティAごとに、関連付けられたエンティティBを取得するためにselectステートメントが完了します。@ Fetch(FetchMode.JOIN)休止状態アノテーション(以下を参照)を使用してこの問題に対処しようとしましたが、機能しません。
@Entity
class A {
...
@OneToOne(fetch = FetchType.EAGER, optional = true)
@PrimaryKeyJoinColumn
// ineffective hibernate annotation
@Fetch(FetchMode.JOIN)
private B a;
...
}