Hibernate Orphan在共享实体上删除

给定一个具有字符串和日期值的实体B。

每个工作负载创建一个B实例,并由每个工作负载中创建的所有其他实体共享。

 B bee = new B();

我们还有另一个实体类A,每个工作负载仅创建一次,并且具有:

  @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
  List<B> bees = new B(); 

然后,我们a.bees.add(bee);为实体a添加一次,为其他实体类型c-z添加一次

现在,由于这只蜜蜂是共享的,所以当我删除具有b的A型实体时会发生什么

休眠状态是否会尝试删除B,尽管它可能会被A以外的其他实体引用?

仅当不再引用b时,才有办法删除ORPHANDELETE / CASCADE吗?

卡维萨卡兰(Kavithakaran)
  • orphanRemovalCascadeType.REMOVE用于删除子实体(当父实体不再引用子实体或删除父实体时)。在这两种情况下,您都在对检索到的父实体进行操作,因此hibernate将对子实体执行操作,因为它已经知道。

  • 为了实现您的目标,休眠需要知道还有谁引用了该子实体。休眠无法自动进行。

  • 但是,如果您的子实体引用了所有其他实体,则可以使其不再引用那些其他实体,因此仅将父实体保留为与之关联的实体。因此,现在将其从此父级中删除时,可以通过orphanRemoval删除它CascadeType.REMOVE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章