Heim  >  Artikel  >  Java  >  Wie gehe ich mit verwaisten Knoten in JPA mit CascadeType.ALL um?

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

Susan Sarandon
Susan SarandonOriginal
2024-11-01 01:17:02634Durchsuche

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 erschwert. 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> 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)

By Wenn Sie orphanRemoval auf true setzen, löscht JPA automatisch verwaiste untergeordnete Datensätze, wenn die übergeordnete Entität entfernt wird.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit verwaisten Knoten in JPA mit CascadeType.ALL um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn