从DB中删除隔离的实体

时间:2014-06-06 14:25:22

标签: java jpa orm

我不相信存在以下内容,但认为这是值得的。

假设我有一个具有以下属性的实体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#2Address#3Address#3

删除了

Contact,并使用实体管理器将Address#3合并回数据库。此时{{1}}仍存在于数据库中,但不再与任何内容相关联。我总是手动处理这个问题,但它让我觉得它是一个相对常见的事情(至少对我而言)并且可能有一个注释可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

尝试orphan removal option

@OneToMany(cascade = {CascadeType.ALL}, , orphanRemoval="true")
private List<Address> addresses;

当您从列表中删除地址时,这将导致地址被删除。