【发布时间】:2020-03-27 19:34:25
【问题描述】:
我创建了与OrgHV 一对一映射的实体Org
@Table(name="ORG_CHART")
@Entity
public class Org {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ORG_ID")
private int id;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "ORG_ID")
private OrgHV orgHV;
//getters and Setters
}
在服务中,我使用 Spring data Jpa repo 检索了 Org 的所有实体,并且由于延迟加载 OrgHV 直到我调用 org.getOrgHV() 才会被获取。问题是我在打电话给repo.findAll() 之后才这样做,所以会话/事务已关闭(如果我错了,请纠正我)?为什么代码运行良好,为什么没有抛出LazyInitializationException?
public orgService()
{
List<Org> orgs = orgRepo.findAll();
for (Org org: orgs)
{
orgRepo.findAll();
OrgHV orgHv = org.getOrgHV();
System.out.pringLn(orgHv.getId());
}
}
【问题讨论】:
-
这能回答你的问题吗? Making a OneToOne-relation lazy
-
我也很好奇为什么这个例子中没有抛出 LazyInitializationException。 FetchType 是 LAZY,事务已经完成,为什么它还在工作?
标签: java hibernate spring-boot jpa spring-data