Hibernate Postload和引用实体上的空字段

时间:2011-08-08 14:19:07

标签: hibernate null field onload

我有两个实体,如下所示:

@Entity
public class Project {
   @Id
   private id;
   private String name;

   ...
}

@Entity
public class Person {
   @Id
   private id;
   private String name;

   @ManyToOne
   private Project project;

   @PostLoad
   void onLoad(){
      if (project.getName() == null){
         //It's always null!!!
      }
   }


   ...
}

正如代码所说,在onLoad上,相关实体的字段始终为空 - 事实上,相关实体的所有字段都是空的。在调用onLoad之前,我需要Hibernate来获取字段。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您必须设置Fetch strategy可能是:

FetchType.LAZY

FetchType.EAGER

您还应该使用外部ID定义连接列。

在您的代码中:

...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "project_id")
private Project project;

答案 1 :(得分:0)

这在Hibernate中无法正常工作。您无法访问PostLoad中关联类的属性。见Reading a Set in PostLoad on JPA/Hibernate