@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数据与person数据一起被获取?
最佳答案
Hibernate无法像@ToMany
关系中的Sets/Lists一样代理您自己的对象,因此延迟加载不起作用。
我认为此链接对于了解您的问题可能很有用:http://justonjava.blogspot.co.uk/2010/09/lazy-one-to-one-and-one-to-many.html
关于java - 为什么延迟加载无法在一对一关联中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21499580/