„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie gehe ich mit verwaisten Knoten in JPA mit CascadeType.ALL um?

Wie gehe ich mit verwaisten Knoten in JPA mit CascadeType.ALL um?

Veröffentlicht am 04.11.2024
Durchsuche:663

How to Handle Orphaned Nodes in JPA with CascadeType.ALL?

Verwaiste Knoten in JPA mit CascadeType.ALL

Trotz der Verwendung von JPAs CascadeType.ALL bleiben verwaiste Knoten in der Datenbank bestehen, was das Löschen verhindert. Um dieses Problem zu beheben, gibt es je nach Persistenzanbieter und JPA-Version mehrere Ansätze:

Hibernate-Konfiguration

Wenn Sie Hibernate verwenden, definieren Sie explizit die Annotation CascadeType.DELETE_ORPHAN in Verbindung mit JPA CascadeType.ALL:

@OneToMany(cascade = {CascadeType.ALL, CascadeType.DELETE_ORPHAN})
private List bikes;

JPA-Lösung (ohne Ruhezustand)

Wenn kein Ruhezustand vorhanden ist, löschen Sie explizit untergeordnete Elemente, bevor Sie den übergeordneten Datensatz entfernen:

  1. Zu löschende Hauptzeile abrufen.
  2. Untergeordnete Elemente abrufen.
  3. Alle untergeordneten Elemente löschen.
  4. Hauptzeile löschen.
  5. Schließen Sie die Sitzung.

JPA 2.0

JPA 2.0 führt das orphanRemoval-Attribut ein:

@OneToMany(mappedBy="foo", orphanRemoval=true)

Durch Setzen von orphanRemoval auf true löscht JPA automatisch verwaiste untergeordnete Datensätze, wenn die übergeordnete Entität entfernt wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3