Java Hibernate单向@ManyToMany:删除而不违反约束?

Java Hibernate单向@ManyToMany:删除而不违反约束?,java,hibernate,many-to-many,Java,Hibernate,Many To Many,我有一个甲级: @Entity public class A { ... @ManyToMany private Set<Ref> refs = new HashSet<Ref>(); ... } 我想删除A和A_Ref,但不删除Ref,但我得到了一个org.hibernate.exception.ConstraintViolationException 有没有一种简单的方法来实现这一点,或者我应该明确地创建一个a_Ref类 谢谢 编辑: 我试图直接在h

我有一个甲级:

@Entity
public class A {
  ...
  @ManyToMany
  private Set<Ref> refs = new HashSet<Ref>();
  ...
}
我想删除A和A_Ref,但不删除Ref,但我得到了一个
org.hibernate.exception.ConstraintViolationException

有没有一种简单的方法来实现这一点,或者我应该明确地创建一个a_Ref类

谢谢

编辑:
我试图直接在hql中删除我的列表。我在object中做了这件事(打破了关系),它成功了(级联+孤立删除)。

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

在多个关系中,您可以使用Jointable,并确保hibernate知道在何处自行删除所有必要的关系,而无需为其创建自己的domainObject


有很多很好的指导如何管理它。从第一眼看,这本指南看起来不错。注意:他注释了getter而不是变量声明!(这只是一个品味问题)。

Ref表是一个参考数据,一个从许多其他类链接而来的数据。所以我不能声明bidirectionnal@ManyToMany(就像你在教程中说的那样)。joinColumn是您是否要覆盖默认设置,但我在其中没有看到相关属性。我不确定是否有必要,只要您只想在对象A内的一个方向上使用它。自动删除引用的重要内容是CascadeType属性。在答案中添加了对级联类型的引用。
@Entity
public class Ref {
 // no link to A
}