我不相信存在以下内容,但认为这是值得的。
假设我有一个具有以下属性的实体Contact
:
@OneToMany(cascade = {CascadeType.ALL})
private List<Address> addresses;
假设Address
是唯一的,因此它不属于任何其他Contact
。我显然可以使用级联,以便在Contact
上执行的操作级联到Address
,但如果删除了Address
则会删除List<Address> addresses
来自Contact
。
EG。 List<Address> addresses
Address
属性包含3个Address#1
值; Address#2
,Address#3
和Address#3
。
Contact
,并使用实体管理器将Address#3
合并回数据库。此时{{1}}仍存在于数据库中,但不再与任何内容相关联。我总是手动处理这个问题,但它让我觉得它是一个相对常见的事情(至少对我而言)并且可能有一个注释可以解决这个问题。
答案 0 :(得分:1)
@OneToMany(cascade = {CascadeType.ALL}, , orphanRemoval="true")
private List<Address> addresses;
当您从列表中删除地址时,这将导致地址被删除。