1

我想实现与 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;
...
}
4

0 回答 0