Ich habe folgende ManyToMany
Beziehung zwischen WorkDay
(hat Annotation ManyToMany) und Event
%Vor%WorkDay-Entität
%Vor%Ereigniselement
Angehängtes UI-Formular zur besseren Übersicht
Wenn ich "Clock" mit dem "run" -Symbol zum ersten Mal drücke, bedeutet dies "Erzeuge Event und starte den Arbeitstag" in Bean und rufe die folgenden Methoden auf:
%Vor%Im Protokoll sehe ich:
auf der Benutzeroberfläche aktualisiert nur den angehängten Rahmen. Sieht immer gut aus .. current WorkDay
object hat ein Element in der events
Sammlung, außerdem werden alle Daten in DB
eingefügt .. aber wenn diese Zeit die Ereigniszeile editiert
Ereigniszeilen-Listener:
%Vor% in work_day_event
fügt eine neue Zeile mit den gleichen work_day_id
und event_id
Daten ein. Und wenn edit row sonst noch einen einfügen und etc .. Im Ergebnis habe ich mehrere gleich Zeilen in work_day_event
table. Warum passiert das?
Link zum github-Projekt-Repository (ver-1.1.0- Viele-zu-viele-Probleme-Zweig)
Ändern Sie CascadeType.ALL
in CascadeType.MERGE
für events
in WokrDay entity
Verwenden Sie diesen Code
%Vor%statt
%Vor% Verwenden Sie nicht ArrayList
, verwenden Sie HashSet
. Weil ArrayList
Duplikate erlaubt.
Weitere Informationen zu CasecadeType finden Sie im Lernprogramm:
Ich denke, die einfache Lösung besteht darin, die Kaskade bei vielen zu vielen Beziehungen zu entfernen und die Aufgabe manuell auszuführen! . Ich sehe dich sowieso schon redundant. Also versuchen Sie, CascadeType.ALL
zu entfernen %Vor%Wie @ManyToMany-Beziehung beibehalten - Eintrag duplizieren oder losgelöste Entität