JPA / Hibernate: ManyToMany löscht die Beziehung

9

Ich habe zwei Klassen, sagen Gruppe und Person mit einer ManyToMany-Relation, die in einer JoinTable zugeordnet ist.

Wenn ich eine Person lösche, die eine Beziehung zu einer Gruppe hat, möchte ich den Eintrag aus der Join-Tabelle löschen (nicht die Gruppe selbst löschen!).

Wie muss ich die Kaskaden-Annotationen definieren? Ich habe keine wirklich hilfreiche Dokumentation gefunden, aber mehrere ungelöste Board-Diskussionen ...

%Vor%     
tautologe 18.11.2010, 18:04
quelle

3 Antworten

3

Cascade wird nicht die verbleibenden Verweise auf die gelöschten Person bereinigen, die auf dem Objekt Group im Speicher verbleiben. Sie müssen das manuell tun. Es scheint, als würde Kaskade dies tun, aber leider funktioniert das nicht so.

Aufgrund der Informationen in Ihrer Frage glaube ich nicht, dass Sie Kaskadenoptionen für Ihre Entitäten Person oder Group benötigen. Es klingt nicht so, als ob sie eine Eltern-Kind-Beziehung teilen, in der die Existenz der einen von der anderen abhängt. Das ist die Art von Beziehung, in der ich einige Kaskadenoptionen erwarten würde.

    
Jim Tough 20.11.2010 03:25
quelle
0

Ich glaube, was Sie wollen, ist:

%Vor%

Um die DB-Beziehung zu entfernen, entfernen Sie die Zuordnung aus jeder Gruppe. Entfernen Sie die Person aus der Group.persons-Auflistung, und entfernen Sie die Gruppe aus der Person.group-Auflistung. Behalten Sie dann Ihr Personenobjekt bei.

    
Griff 18.11.2010 20:08
quelle
0

Sie können das wahrscheinlich in einer Datenbank tun (abhängig von Ihrer Datenbank und Ihren Fähigkeiten). Durch Hinzufügen von "on delete cascade" zum Fremdschlüssel der Beziehungstabelle.

    
adsurbum 13.11.2012 13:19
quelle

Tags und Links