Java JPA加载多个惰性集合

Java JPA加载多个惰性集合,java,hibernate,spring-boot,jpa,Java,Hibernate,Spring Boot,Jpa,我有以下实体: @实体 公共类ProjectEntity实现项目{ @身份证 @GeneratedValue(策略=GenerationType.IDENTITY) 私人长id; @manytone(targetEntity=FlowEntity.class) 私人流量; } @实体 公共类FlowEntity实现流{ @身份证 @GeneratedValue(策略=GenerationType.IDENTITY) 私人长id; @OneToMany(targetEntity=StepEntit

我有以下实体:

@实体
公共类ProjectEntity实现项目{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@manytone(targetEntity=FlowEntity.class)
私人流量;
}
@实体
公共类FlowEntity实现流{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@OneToMany(targetEntity=StepEntity.class,fetch=FetchType.EAGER)
私有列表步骤;
}
@实体
公共类StepEntity实现了Step{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@ManyToMany(targetEntity=ResourceEntity.class,fetch=FetchType.LAZY)
私人名单资源;
@OneToMany(targetEntity=StepRuleEntity.class,fetch=FetchType.LAZY)
私人名单规则;
@ManyToMany(targetEntity=ResourceTypeDataEntity.class,fetch=FetchType.LAZY)
私有列表资源类型数据;
}
现在,当我检索我的项目时,我希望所有内容都已加载。我不能让每件事都充满热情,因为这只会让每件事都慢下来。但对于这个功能,我现在真的需要从项目的一切

我在互联网上读到,你需要对每个集合调用
.size()
方法,然后jpa将加载集合,但它不起作用。另外,我发现非常奇怪的是,我需要在流的每个步骤上对dao执行
for
循环,以加载下一个延迟加载的集合

我的方法用
@Transactional
注释以获取项目,它是默认的
jparepository


你如何正确地做到这一点

理想情况下@OneToMany默认情况下必须具有延迟加载的关联。因此,在类FlowEntity中,必须延迟获取步骤。此外,如答案所示,您可以使用JPQL连接获取来急切地加载所需的关联。

您可以使用实体图()或JPQL连接获取()