我有一个关于 hibernate 的问题。
我有两个具有多对一关系的对象:
例如:
对象1:
public class Person {
@Basic
@Column(length = 50)
protected String name;
@NotFound(action=NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "groupCode", referencedColumnName = "code", updatable=false)
protected Group group;
...all the getters and setters...
}
对象2:
public class Group {
@Id
@Basic
@Column(length = 3, nullable = false)
protected String code;
@Basic
@Column(length = 30, nullable = false)
protected String groupName;
@Basic
@Column(precision = 15, scale = 0)
protected long exampleFieldId;
...rest of code....
}
我试图使这个例子尽可能简单。我的问题是Person上的关联对象(组)可以为null。当前,当我加载特定的Person时,Hibernate会加载Group的实例并抛出异常,因为它无法将exampleFieldId设置为null(因为它是原始类型)。
我可以通过将long更改为Long来停止此错误,但是,我会认为Person上的Group对象应该为null,因此首先没有加载Group对象吗?
有谁知道Hibernate是否加载关联的对象而不管它是否允许为null,还是我错过了一些重要的注释?
谢谢
最佳答案
如Firo所述:
即使它在NHibernate中,这似乎也是您遇到的相同问题。值得检查!
Why does Hibernate attempt to load "not-found=ignore" associations?
编辑:可能是您缺少@Fetch(FetchMode.JOIN)
。