为什么懒惰加载不能在一对一关联中工作?

M S*_*ach 4 java hibernate lazy-loading

@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

    }
Run Code Online (Sandbox Code Playgroud)

当我做

 Person person1=(Person)session.get(Person.class, 1);
Run Code Online (Sandbox Code Playgroud)

我看到两个问题被解雇了.一个用于获取人员数据,另一个用于获取人员详细数据.

根据我的理解,应该只触发1个查询,用于获取人员数据而非人员详细数据,因为我已经提到了延迟加载.为什么personDetail数据与人员数据一起被提取?

gip*_*ani 6

Hibernate不能像处理关系中的集合/列表那样代理您自己的对象@ToMany,因此延迟加载不起作用.

我认为这个链接可能有助于理解您的问题:http://justonjava.blogspot.co.uk/2010/09/lazy-one-to-one-and-one-to-many.html