hibernate - 为什么 Hibernate 不设置 child 对 parent 的引用?

标签 hibernate hibernate-cascade

考虑类 Parent:

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

和类 child :
{
    ...
    @ManyToOne
    @JoinColumn(name="parentID")
    Parent parent;
    ...
}

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

最佳答案

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

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

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

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

关于hibernate - 为什么 Hibernate 不设置 child 对 parent 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36375052/

相关文章:

java - hibernate -事务 : Consistency between two Accounts

java - 无法使用 JPA 实例化集合持久化器

java - hibernate 一对多插入

java - 同一列的多个条件

java - org.hibernate.ObjectDeletedException : deleted object would be re-saved by cascade when collection objecs have a one to one association

java - Hibernate:双向一对多外键约束失败

sql - hibernate.hbm2ddl.auto 不会将序列链接到 id 列

java - Hibernate 可以在更新分离的对象时删除孤立的集合吗?

java - Hibernate 一对多添加新子项