在Hibernate中对瞬态引用进行Nullify

时间:2013-04-09 12:38:00

标签: hibernate transient

我有一个场景,我需要删除父实体,并且这样做我需要使与父项关联的引用无效。

e.g。我有两个表/实体Person和Address。 人是父母,地址是孩子(一对多)。 现在当我删除Person时,我需要使地址表中的人物引用无效。

我们是否有任何预先定义的注释来完成这项工作。

非常感谢任何帮助/建议。

感谢。

2 个答案:

答案 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);