我有一个场景,我需要删除一个父实体,这样做我需要取消与父实体关联的引用。
例如,我有两个表格/实体人员和地址。人是父母,地址是孩子(一对多)。现在,当我删除 Person 时,我需要取消 Address 表中的人员引用。
我们是否有任何预定义的注释来完成这项工作。
非常感谢任何帮助/建议。
谢谢。
我看到的最简单的方法是在删除后刷新子实体。由于您的关系是双向的,否则您可以使用父级上的 @PreRemove 方法自动管理它(将所有子级的父级引用设置为 null)。
恕我直言,这里误用了瞬态这个词,瞬态意味着该属性不会被持久化,删除引用应该更合适。
您必须手动完成:
@Entity
public class Person {
...
@OneToMany(mappedBy="person")
public List<Address> addresses;
...
}
@Entity
public class Address {
...
@ManyToOne
public Person person;
...
}
for (Address address: person.addresses) {
address.person = null;
}
session.delete(person);