我有一个A类:
@Entity
public class A {
...
@ManyToMany
private Set<Ref> refs = new HashSet<Ref>();
...
}
一堂课Ref:
@Entity
public class Ref {
// no link to A
}
我想删除A和A_Ref而不是Ref,但我得到org.hibernate.exception.ConstraintViolationException
有没有一种简单的方法可以做到这一点,还是应该明确地创建一个A_Ref类?
由于
编辑: 我试图直接在hql中删除我的A列表。我在对象中完成了它(打破了关系)并且它起作用(级联+孤儿删除)。
答案 0 :(得分:1)
我不确定,如果我说得对,但是根据我的理解我的第一个猜测是,你没有使用所有必要的注释来确保,hibernate会自动删除Ref中的必要引用。
在manyToMany关系中,你可以使用joinTables和cascadetypes来确保hibernate知道在哪里删除所有必要的关系而不为它创建自己的domainObject。
有很多很好的指南如何管理它。在第一个视图中,mkyong的指南看起来非常好。注意:他注释了getter而不是变量声明! (这只是一个品味问题)。