我有一个场景,我需要删除父实体,并且这样做我需要使与父项关联的引用无效。
e.g。我有两个表/实体Person和Address。 人是父母,地址是孩子(一对多)。 现在当我删除Person时,我需要使地址表中的人物引用无效。
我们是否有任何预先定义的注释来完成这项工作。
非常感谢任何帮助/建议。
感谢。
答案 0 :(得分:0)
我看到的最简单的方法是在删除后刷新子实体。 由于您的关系是双向的,您可以使用父级的@PreRemove方法自动管理它(将所有子级的父引用设置为null)。
恕我直言,瞬态词在这里被误用,瞬态意味着属性不会被持久化,删除引用应该更合适。
答案 1 :(得分:0)
你必须手动完成:
@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);