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