Löschen in Hibernate

TMDolphin

Grünschnabel
Hi,
Habe wohl ein kleines Denkproblem, weshalb ich alle Ergebnisse meiner Suche nicht verstanden habe/umsetzen konnte.
Es geht darum, dass ich mit .delete(Object...) ein Objekt aus der Datenbank löschen möchte. Wie kann ich nun sicherstellen, das alle Fremdschlüsselverweise auf dieses Objekt auf null gesetzt werden?

gruß Dolphin
 
Dafür gibt es die Cascade Annotationen. Einfach mal danach googlen, die definieren auf welche referenzen wann wie kaskadiert werden soll.

Gruß
Ollie
 
Hallo,
Danke für die Antwort. Ich habe mir Cascading in Zusammenhang mit Hibernate angesehen und auch nochmal in einem Buch nachgeschlagen. Grundsätzlich habe ich jetzt aber das Cascading mehr als Weitergabe von Löschungen verstanden. Wobei die Regeln festlegen, wann es weitergegeben wird.
Ich habe nichts dazu gefunden, ob es auch möglich ist mit Cascading zu bestimmen, das eine Propertie null gesetzt wird, wenn ich das referenzierte Objekt lösche. In den Bsp die ich sah, wurde dies händisch vor der eigentlich Löschung gemacht.
Gibt es dafür einen einfacheren weg als es per Hand null zu setzen?
 
Hi TM,

verstehe ich das richtig, dass Du gerade kein kaskadiertes Löschen möchtest, sondern
lediglich die Löschung der Referenzen in anderen Objekten löschen willst?

Gruß, Tim.
 
Ganz genau. Wenn ein Objekt gelöscht wird, soll jede Referenz darauf gelöscht werden. Entweder soll es null werden, oder halt bei einer List aus dieser entfernt werden.

thx TMD
 
Hi TMD,

dann kommt kaskadiertes Löschen nicht in Frage.

Ich bin sicher, dass für Dein beschriebenes Problem ein Pattern existiert.
Anstatt mir eine Lösung jetzt auszudenken würde ich vorschlagen, einmal nach passenden Pattern zu suchen.

Ein Ansatz wäre z.B. Observer, bei denen sich ein Objekt an- und abmelden kann und ähnliches. Da muss man nur auf das Thread handling aufpassen, dieses Patttern ist bekannt für Runtime Exceptions wenn es unsauber oder unvollständig Anwendung findet.

Wenn Du eines gefunden hast poste das bitte mal, würd mich interessieren.

Danke & Gruß

Tim
 
Danke für deine Antwort. Das Problem ist auf jeden fall richtig verstanden. Schade dass es keine Möglichkeit mit Hibernate direkt gibt. Ich denke im aktuellen Fall werde ich vorher per Iteration alle Referenzen händisch löschen. Performancetechnich ist das erstmal kein Problem und ich muss nicht mit Observern etc. auseinander setzen.
vielen Dank nochmal TMD
 

Neue Beiträge

Zurück