如何让Hibernate中子实体始终随父实体关联加载?
Hibernate 加载父实体时自动JOIN子实体的专属注解
有的,你可以用Hibernate专属的@Fetch(FetchMode.JOIN)注解配合@OneToMany使用,把它加在children字段上,这样每次加载Parent实体时,Hibernate都会自动通过JOIN方式获取关联的Child集合,不用在查询语句里显式写JOIN。
修改后的实体类示例:
class Parent { @OneToMany(mappedBy = "...", fetch = FetchType.LAZY) // 此处fetch可设为LAZY,@Fetch会覆盖其加载方式 @Fetch(FetchMode.JOIN) private List<Child> children; }
需要注意的点:
@Fetch(FetchMode.JOIN)是Hibernate专属注解,不属于JPA标准规范,使用后代码会与Hibernate绑定,无法直接迁移到其他JPA实现(如EclipseLink)。- 该注解会强制关联集合采用立即加载模式,无论你原本的
fetch属性设置为LAZY还是EAGER,每次加载父实体都会同步查询子实体,要根据业务场景评估性能,避免滥用。
内容的提问来源于stack exchange,提问作者Jin Kwon
相关产品推荐
相关产品推荐

