hibernate 3.6.10中的孤儿删除问题

时间:2015-03-17 07:12:14

标签: hibernate jpa

我正面临着在hibernate中删除孤儿的问题。

问题: 我有一个实体A,它与实体B有一对一的关系。我使用了一对一的注释和孤儿删除属性(@OneToOne(cascade = CascadeType.ALL,orphanRemoval = true))。关联实体B也被其他实体引用。因此,在删除实体A时,我遇到了约束违规异常,说明找到了儿童记录'。我想删除要删除的关联实体,如果它没有被其他实体引用。如果它有现有的关联,我不想删除B,只删除A。

有没有办法做到这一点,我正在使用hibernate 3.6.10。我读过orphanRemoval会做的伎俩,但它不是我的情况。

任何帮助真的很感激..

谢谢!

1 个答案:

答案 0 :(得分:0)

如果对于同一个B,可以有一个或多个As,注释应该是这样的:

@Entity
public class A {

    @ManyToOne
    private B b;

}

在这种情况下没有orphanRemoval可用,它会做出与您预期不同的事情。你可以反过来映射:

@Entity
public class B {

    @OneToMany(mappedBy="b", orphanRemoval=true)
    private List<A> aList;

}

这意味着:当从列表中删除A时,整个A实例将从持久性中删除。