2013-04-01 6 views
8

私はSpring Data、JPA、Hibernate、およびMySQLを使用します。私はイベントとカテゴリの間に1対多の関係があります。明らかに、1つのイベントには1つのカテゴリしかなく、1つのカテゴリには多くのイベントを割り当てることができます。このカテゴリの外部キーを保持し、エラーが発生した場合、カテゴリを削除しようとすると問題が発生します。 Categoryを削除すると、Eventテーブルの外部キーをnullに設定したいと思います。現時点では、カテゴリの削除前にヌルに更新することで、コード内で明示的に外部キーを設定することによって、すべてのイベントを更新します。注釈を使用してそれを行う方法はありますか?JPAの一対多を削除し、foregnキーをnullに設定します。

これは私のカテゴリーである:

@Entity 
    @Table(name = "category") 
    public class Category implements Serializable{ 
    @OneToMany(mappedBy="category", targetEntity=Event.class, fetch=FetchType.LAZY, cascade= 
{CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) 

    public Set<Event> getEvents_category() { 
    return events_category; 
    } 
    } 

とイベントクラス:私はトピックが何度も議論されましたが、私はすべてのを見ていないことを見てきました

@Entity 
    @Table(name = "event") 
    public class Event implements Serializable{ 

    @ManyToOne(cascade={CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, 
CascadeType.REFRESH}) 
    @JoinColumn(name="events_dancestyle") 
    public DanceStyle getDanceStyle() { 
    return danceStyle; 
    } 
    } 

それに対する解決策。

答えて

5

残念ながら、JPA/Hibernateアノテーションを使用して残念ながらこれを行うことはできません。これらの関連の質問を参照してください。

Have JPA/Hibernate to replicate the "ON DELETE SET NULL" functionality

On delete set null in hibernate in @OneToMany

+0

こんにちはデビッド、あなたの答えをありがとう。あなたの答えは、私が正しいことを確認しました。私はあなたが与えたリンクとまったく同じアプローチを使用しました。 – Lukasz

関連する問題