2012-02-02 19 views
3

私は2つのクラスを持っています:エントリとコンテンツ。カスケードで1対1の削除

public class Entry implements Serializable { 
    @OneToOne(cascade=CascadeType.ALL) 
    private Content content; 
} 

と内容が...コンテンツが削除された私はとそれに関連するすべてのエントリHOを削除したいのならば、私が何をしたいのか、彼の値(名前などなどなど)が...ある

これを持っていますそのtipical孤児の問題(Imがコンテンツを削除するエントリ!イムを削除しない)

エントリに関連するコンテンツ...とentrysのindependientあるexistenc内容を持っているか、することができないではない...

どのように私は冬眠すると言うことができますねえねえ...場合は、コンテンツを削除するつもりです関連するFKを見つけて削除してください!」

答えて

0

は、関連双方向を作成し、削除をカスケード:次のように

public class Content { 
    ... 
    @OneToOne(mappedBy = "content", cascade = CascadeType.REMOVE) 
    private Entry entry; 

} 
+0

私は同僚と話していて、彼は同じことを言った!それは悪い考えではありませんが、私はこれを行う場合、エントリにponting私のコンテンツテーブルでFKを作成する必要が???私はこれが正しいとは思っていません(またはマビは間違っています)。しかし、私はテーブルにFKを追加したくありません。私のコンテンツテーブルにFKを追加する必要がない場合、これが "魔法のように"動作するようになると...神はあなたを祝福します! – BrunoX

+0

'mappedBy =" content "'は、アソシエーションがエントリテーブルの外部キーを使用してアソシエーションの相手側によってマッピングされることを意味します。追加の外部キーは必要ありません。 Hibernateを使っているときのアソシエーションの仕組みを理解しなければならないので、Hibernateリファレンスマニュアルを読んでください。 –

1

は、コンテンツからのエントリへのリンクを作成しない理由:

public class Content implements Seralizable { 
    @OneToOne(cascade=CascadeType.REMOVE, optional=true) 
    private Entry entry; 
} 

オプションの属性に注意してください。これは、あなたがあなたの投稿で言ったように、コンテンツがそれに関連するエントリを持たないかもしれないという事実を表しています。

+0

私は同僚と話していて、彼は同じことを言った!それは悪い考えではありませんが、私はこれを行う場合、エントリにponting私のコンテンツテーブルでFKを作成する必要が???私はこれが正しいとは思っていません(またはマビは間違っています)。しかし、私はテーブルにFKを追加したくありません。私のコンテンツテーブルにFKを追加する必要がない場合、これが "魔法のように"動作するようになると...神はあなたを祝福します! – BrunoX

関連する問題