我有两个实体,如下所示:
@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来获取字段。
有什么想法吗?
感谢。
答案 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