ManyToMany löscht zugewiesene Dateien

Andyx1975

Mitglied
Hallo,

sorry für die späte Antwort... ich war die letzten beiden tage unterwegs gewesen... und noch einmal tausen Dank für all die Mühe die du dir gemacht hast. Aber ich glaube wir reden aneinander vorbei. das mit dem Löschen funktioniert soweit auch schon. Mein Ziel ist es jedoch:

1. Fall
Ich habe eine Tour der ist ein Supplier zugewiesen. Wenn ich den Supplier lösche, soll dies nicht möglich sein, da der Supplier einer Tour zugewiesen ist.

2. Fall
Ich habe eine Tour der ist ein Supplier zugewiesen. Wenn ich die Tour lösche, soll die Verbindung zum Supplier aufgehoben werden und die Tour gelöscht werden. Der Supplier ansich, soll jedoch nicht gelöscht werden.

Danke und Gruß
Andy
 

saftmeister

Nutze den Saft!
Ok, sorry, missverstanden.

Zu 1. Das ist relativ einfach. Du müsstest vor dem Löschen ja nur prüfen, ob an der Supplier-Entity eine Tour dran hängt:

Java:
            try
            {
                result = em.find( DSupplier.class, id );
                if(result.getTours() == null || result.getTours().size() == 0)
                { // Supplier nur löschen, wenn keine Tour drauf verweist.
                    em.remove( result );
                    entr.commit();
                    committed = true;
                }
            }
            finally
            {
                if ( !committed )
                    entr.rollback();
            }

Zu 2. Das Vorgehen habe ich im vorherigen Post beschrieben. Tour laden, das Supplier-Attribute der Tour-Entity auf null setzen, Tour-Entity speichern, Tour löschen.

EDIT: Ich hab noch mal drüber nachgedacht. Eigentlich müsste das Problem behoben sein, wenn du in der Supplier-Entity bei der ManyToMany zu Tour den CascadeType auf PERSIST stellst. Dann müsste das (theoretisch) genauso funktionieren, wie du es wünschst. Ich werde es aber noch mal ausprobieren und berichten.
 
Zuletzt bearbeitet:

saftmeister

Nutze den Saft!
So, ich hab es noch mal getestet, mit dem Vorschlag, cascade auf Persist zu stellen und vor dem Löschen des Supplier das tours-Attribute zu prüfen konnte ich deine Wünsche korrekt nachstellen.
 

Anhänge

  • eclipselink-test.tar
    40 KB · Aufrufe: 11