我想实现与 JPA 的双向零对一关联。目前,我使用以下代码段:
@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,都会完成一个 select 语句以获取关联的实体 B。我尝试使用 @Fetch(FetchMode.JOIN) 休眠注释来处理这个问题(见下文),但它不起作用。
@Entity
class A {
...
@OneToOne(fetch = FetchType.EAGER, optional = true)
@PrimaryKeyJoinColumn
// ineffective hibernate annotation
@Fetch(FetchMode.JOIN)
private B a;
...
}