为什么 Hibernate 不设置子项对父项的引用?



考虑类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;
}

相关内容

  • 没有找到相关文章

最新更新