child 的 child 的 JPA Hibernate 级联类型

JPA Hibernate cascade type for child of child

我正在寻找文档或回答级联如何为 child 的 child 工作,例如:

public class Parent{
  @OneToMany(fetch = FetchType.EAGER,mappedBy = "parent",cascade = CascadeType.ALL)
  private List<Child> child;
}

public class Child{
     @OneToMany(mappedBy="child")
      private List<AnotherChild> anohterChild;
    }
  @ManyToOne
    private Parent parent;
}

现在的问题是,从 parent class 应用于 "Child" 的级联操作是否适用于 "AnotherChild"? 换句话说,如果我坚持 "Parent" Object 它会坚持 "AnotherChild" 吗?

如果您保留 parent,只有 parent-class 的 child-list 中的子项会保留,但 child-class 中的 AnotherChilds 列表不会保留。

如果你也想持久化它们,也可以将其级联:

public class Child{
     @OneToMany(mappedBy="child", cascade = CascadeType.PERSIST)
     private List<AnotherChild> anohterChild;

     @ManyToOne
     private Parent parent;
}

并且CascadeType.ALL真正需要的时候才用,因为这个cascade-type包含的不仅仅是坚持。如下图所示,CascadeType.ALL 包括所有其他 cascade-type,包括 cascade-type "remove",这意味着,当您的 parent-object 被删除时,所有其他 child-objects 也被删除。