我有两个具有多对一关系的对象:
对象1:
@Entity
@Table(name=”Person”)
public class Person {
Long id;
String name;
String surname;
… // other fields
@NotFound(action=NotFoundAction.IGNORE)
@ManyToOne @JoinColumn(name = "groupId")
Group group;
....all the getters and setters…
}
对象2:
public class Group {
@Id
@Column
Long groupId;
@Column
protected String groupName;
@Column(precision = 15, scale = 0)
protected long exampleFieldId;
...rest of code....
}
类Person中的字段“group”可以为null。如何确定从数据库或“NotFound”注释中获取空值的位置?
这种情况可能出现在以下情况中:数据库级别的用户可以访问一组有限的组。
答案 0 :(得分:0)
'未找到'在这种情况下,与null相同。您不能使用null初始化组,因为您将获得NullPointerException。
答案 1 :(得分:0)
你可以尝试在获取ObjectNotFoundException时通过下面的getter和debug来替换@NotFound,但是如果你的组已经为null我认为hibernate可能会初始化组对象为null,这可能会导致NPE,但你可以使用这个代码调试如果你想要一些hibernate代理的自定义加载行为,请使用注释@NotFound。
@ManyToOne @JoinColumn(name = "groupId")
Group group;
private Group getGroup(){
if(!Hibernate.isInitialized(group)) {
try {
Hibernate.initialize(group);
} catch(org.hibernate.ObjectNotFoundException e) {
group = null;
}
}
return group;
}