Hibernate单向@ManyToMany:删除没有约束违规?

时间:2012-01-16 16:45:31

标签: java hibernate many-to-many

我有一个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列表。我在对象中完成了它(打破了关系)并且它起作用(级联+孤儿删除)。

1 个答案:

答案 0 :(得分:1)

我不确定,如果我说得对,但是根据我的理解我的第一个猜测是,你没有使用所有必要的注释来确保,hibernate会自动删除Ref中的必要引用。

在manyToMany关系中,你可以使用joinTables和cascadetypes来确保hibernate知道在哪里删除所有必要的关系而不为它创建自己的domainObject。

有很多很好的指南如何管理它。在第一个视图中,mkyong的指南看起来非常好。注意:他注释了getter而不是变量声明! (这只是一个品味问题)。