2013-04-01 8 views
8

Ich benutze Spring Data, JPA, Hibernate und MySQL. Ich habe eine Beziehung zwischen Ereignis und Kategorie. Offensichtlich kann ein Ereignis nur eine Kategorie haben, und einer Kategorie können viele Ereignisse zugewiesen werden. Das Problem tritt auf, wenn ich versuche, die Kategorie zu entfernen. Wenn ein Ereignis einen Fremdschlüssel dieser Kategorie enthält, erhalte ich einen Fehler. Ich möchte den Fremdschlüssel in der Ereignistabelle auf Null festlegen, wenn eine Kategorie gelöscht wird. Im Moment aktualisiere ich alle Events, indem ich den Fremdschlüssel explizit im Code einfüge, indem ich ihn vor dem Löschen der Kategorie auf null aktualisiere. Gibt es eine Möglichkeit, dies mit Anmerkungen zu tun?JPA Eins-zu-viele löschen und Vorzeichen auf Null setzen

Das ist meine Kategorie:

@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; 
    } 
    } 

Und die Event-Klasse:

@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; 
    } 
    } 

ich, dass das Thema viele Male diskutiert wurde gesehen habe, aber ich habe nicht gesehen Lösung dafür.

Antwort