hibernate lazy fetch无法正常工作

时间:2013-12-26 07:01:26

标签: hibernate fetch lazy-evaluation

我正在使用hibernate,使用play framework 1.2.4 假设我有一个名为Person的模型和一个名为IdentityInfo的模型,关系是一个人只能有一个身份信息。
我想在IdentityInfo提取上使用延迟提取。这是我的模型代码:

public class Person {
    // ... some code

    @OneToOne(fetch = FetchType.lazy)
    @JoinColumn(name = "info_id_fk")
    private IdentityInfo info = null;

    public IndentityInfo getInfo(){
        return this.info;
    }

    public void setInfo(IdentityInfo  info){
        this.info = info;
    }
}

public class IdentityInfo {
  // ... some code
  public String xxx = null;

  public String getXxx(){
      return this.xxx;
  }

  public void setXxx(String xxx){
      this.xxx = xxx;
  }


}

但这是问题(很奇怪): 我有个人名单,我需要查看所有人物的身份信息 并且某些人物的身份可以正确加载(人有一个相应的身份信息)。
更加具体, 当我使用 java reflect 来获取此人的身份信息时,有时info的属性为null(但事实并非如此)。

但是当我只使用person.info.getXxx()时,属性的值就出现了。

并且它没有任何错误消息。程序正常运行。

任何人都有任何想法?

1 个答案:

答案 0 :(得分:0)

为什么setter方法没有参数?

试试这个

    public void setInfo(IndentityInfo info)
      {

       Hibernate.initialize(info);     
       this.info = info;

      }