【发布时间】:2014-02-01 14:57:39
【问题描述】:
@Entity
public class Person {
@Id
@GeneratedValue
private int personId;
@OneToOne(cascade=CascadeType.ALL, mappedBy="person", fetch=FetchType.LAZY)
private PersonDetail personDetail;
//getters and setters
}
@Entity
public class PersonDetail {
@Id
@GeneratedValue
private int personDetailId;
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private Person person;
//getters and setters
}
当我这样做时
Person person1=(Person)session.get(Person.class, 1);
我看到两个查询被触发。一个用于获取人员数据,另一个用于获取人员详细信息。
根据我的理解,应该只触发 1 个查询,该查询用于获取人员数据,而不是我提到的人员详细信息数据 延迟加载。为什么 personDetail 数据与人员数据一起被获取?
【问题讨论】:
-
检查this线程,这很好解释。
标签: java hibernate lazy-loading