考虑类Parent:
{
...
@OneToMany(cascade=CascadeType.ALL,mappedBy = "parent")
Set<Child> children;
...
}
和类儿童:
{
...
@ManyToOne
@JoinColumn(name="parentID")
Parent parent;
...
}
如果我在应用程序中创建一个新的子对象,并将其放入Parent的children字段中,然后保留Parent对象,为什么Hibernate不自动更新child对象的父字段(以便设置parentID列)?
因为Hibernate不是一个神奇的工具。它是为使用您设计和编写的POJO而设计的,并且它不会修改这些POJO的字节码。如果需要,您有责任初始化关联的另一端。
另一个原因是,这就是JPA规范(它必须遵守)指定其工作方式的方式。
但没有什么能阻止你有一个方法
public void addChild(Child c) {
this.children.add(c);
c.parent = this;
}