如果您想不选择(n + 1)来检索Bar and Baz,请使用以下hql。
SELECt b FROM base b LEFT JOIN FETCH b.bars bar LEFT JOIN FETCH bar.baz
这应该只导致一个sql。
另外,如果您不想获取’Baz’,则只需从Bar-> Baz’lazy’中进行关联即可。
默认情况下,JPA对“ @OneToOne”和“ @ManyToOne”关联强制执行“紧急”获取。因此,您必须显式使其变得懒惰,如下所示。
@Entitypublic class Bar { @oneToOne @JoinColumn(name = "baz_id", nullable = false, fetch=FetchType.Lazy) private Baz baz; //...}


