为什么Hibernate没有设置孩子对父母的引用?

时间:2016-04-02 15:19:40

标签: hibernate hibernate-cascade

考虑班级家长:

{
    ...
    @OneToMany(cascade=CascadeType.ALL,mappedBy = "parent")
    Set<Child> children;
    ...
}

和班级孩子:

{
    ...
    @ManyToOne
    @JoinColumn(name="parentID")
    Parent parent;
    ...
}

如果我在应用程序内部创建一个新子项并将其放在Parent的 children 字段中,然后保留Parent对象,为什么Hibernate不会自动更新父字段(在为了设置Child对象的 parentID 列?

1 个答案:

答案 0 :(得分:2)

因为Hibernate不是一个神奇的工具。它旨在使用您设计和编写的POJO,并且它不会修改这些POJO的字节代码。如果需要,您有责任初始化协会的另一方。

另一个原因是,这就是它必须遵守的JPA规范如何规定其工作原理。

但没有什么能阻止你使用方法

public void addChild(Child c) {
    this.children.add(c);
    c.parent = this;
}