这里的hbm.xml实现有点奇怪。
父映射
<list name="children" inverse="true" lazy="true" cascade="all">
<key>
<column name="parent_id" not-null="true"/>
</key>
<list-index column="sequence"/>
<one-to-many class="Child"/>
</list>
儿童制图
<many-to-one name="parent" class="Parent" cascade="all">
<column name="parent_id" not-null="true"/>
</many-to-one>
异常
"not-null property references a null or transient value: Child.parent"
儿童班
public class Child {
private Parent parent;
//parent getter and setter
}
使用Hibernate 4.0
答案 0 :(得分:0)
将Child
对象传递给session.save()
且此Child
对象已parent = null
时,您收到此异常。
非常常见和推荐的模式是在Parent类中使用这种方便的方法:
<强> Parent.java 强>:
public void addChild(Child c) {
if (children == null) {
children = new ArrayList();
}
children.add( c );
c.setParent( this );
}
// make setter private
private void setChildren(List<Child> children) {
this.children = children;
}
私有的setter setChildren将由Hibernate在内部使用。
在构建/修改Parent对象时,您应该使用方法addChild。