【发布时间】:2020-08-12 19:26:19
【问题描述】:
给定一个实体 B,它有一个字符串和一个日期值。
每个工作负载创建一次 B 的实例,并由每个工作负载中创建的所有其他实体共享。
B bee = new B();
我们有另一个实体类 A,每个工作负载只创建一次,并且:
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
List<B> bees = new B();
然后,我们为实体 a 添加一次a.bees.add(bee);,为其他实体类型 c - z 添加一次。
现在,由于这只蜜蜂是共享的,当我删除具有此 b 的 A 类型实体时会发生什么?
尽管 B 可能被 A 以外的其他实体引用,hibernate 会尝试删除它吗?
只有当 b 不再被 ANYWHERE 引用时,有没有办法 ORPHANDELETE / CASCADE DELETE?
【问题讨论】:
-
This 问题类似,但它并没有真正说明子实体是否仅在被所有父母或任何父母孤立后才被删除。我猜你可以创建一个简单的单元测试并自己尝试一下。
-
是的,我遇到过类似但不完全是这种情况。