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连接获取()