4

考虑类家长:

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

和班级孩子:

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

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

4

1 回答 1

3

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

另一个原因是它必须遵守的 JPA 规范如何指定它的工作方式。

但没有什么能阻止你有一个方法

public void addChild(Child c) {
    this.children.add(c);
    c.parent = this;
}
于 2016-04-02T15:26:58.573 回答