为什么 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;
}