Używam Spring Data, JPA, Hibernate i MySQL. Mam jedną do wielu relacji między wydarzeniem a kategorią. Oczywiście jedno wydarzenie może mieć tylko jedną kategorię, a jednej kategorii można przypisać wiele wydarzeń. Problem pojawia się, gdy próbuję usunąć kategorię, jeśli jakieś zdarzenie zawiera klucz obcy tej kategorii, wtedy pojawia się błąd. Chciałbym ustawić klucz obcy w tabeli zdarzeń na wartość null, gdy kategoria zostanie usunięta. W tej chwili aktualizuję wszystkie zdarzenia, jawnie ustawiając klucz obcy w kodzie, aktualizując go do wartości null przed usunięciem kategorii. Czy jest jakikolwiek sposób na wykorzystanie adnotacji?JPA jeden do wielu usunąć i ustawić klucz foregn na wartość null
To mój Kategoria:
@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;
}
}
I klasa zdarzenia:
@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;
}
}
Widziałem, że temat był omawiany wiele razy, ale ja nie widziałem żadnego rozwiązanie tego.
Cześć David, dzięki za odpowiedź. Twoja odpowiedź właśnie potwierdziła, że miałem rację. Użyłem dokładnie tego samego podejścia, co w linkach, które podałeś. – Lukasz