我正面临着在hibernate中删除孤儿的问题。
问题: 我有一个实体A,它与实体B有一对一的关系。我使用了一对一的注释和孤儿删除属性(@OneToOne(cascade = CascadeType.ALL,orphanRemoval = true))。关联实体B也被其他实体引用。因此,在删除实体A时,我遇到了约束违规异常,说明找到了儿童记录'。我想删除要删除的关联实体,如果它没有被其他实体引用。如果它有现有的关联,我不想删除B,只删除A。
有没有办法做到这一点,我正在使用hibernate 3.6.10。我读过orphanRemoval会做的伎俩,但它不是我的情况。
任何帮助真的很感激..
谢谢!
答案 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实例将从持久性中删除。