私はクラスAを持っている:Hibernate単方向@ManyToMany:制約違反なしで削除しますか?
@Entity
public class A {
...
@ManyToMany
private Set<Ref> refs = new HashSet<Ref>();
...
}
とクラスのRef:
@Entity
public class Ref {
// no link to A
}
私はAとA_Refではなく、文献を削除したいのですが、私はorg.hibernate.exception.ConstraintViolationException
を取得ありそれを行う簡単な方法か、明示的にA_Refクラスを作成する必要がありますか?
おかげ
編集:私はHQLで直接Aの私のリストを削除しようとした 。私はオブジェクトでそれをやった(関係を破った)と働いた(カスケード+孤児の削除)。
"Ref"テーブルは、多くの他のクラスからリンクされた参照データです。だから、私はbidirectionnal @ManyToManyを宣言することはできません(あなたのチュートリアルで言われているように)。 joinColumnは、デフォルト設定をオーバーライドする場合に使用しますが、そこに関連する属性は表示されませんでした。 –
オブジェクトAの中から一方向にしか使用しない限り、必要であればわかりません。参照を自動的に削除するには、CascadeType属性が重要です。答えにカスケード型のリファレンスを追加しました。 – crusam