JPA CascadeType.ALL löscht keine Waisen
Bei Verwendung von JPA mit der @OneToMany-Zuordnung mit cascade = CascadeType.ALL wird erwartet, dass Waisen vorhanden sind Knoten werden gelöscht, wenn die übergeordnete Entität gelöscht wird. In bestimmten Fällen können jedoch verwaiste Datensätze in der Datenbank bestehen bleiben.
Lösung:
Mit Hibernate:
Wenn Mit Hibernate kann die Annotation CascadeType.DELETE_ORPHAN in Verbindung mit CascadeType.ALL hinzugefügt werden:
<code class="java">@OneToMany (cascade = {CascadeType.ALL, CascadeType.DELETE_ORPHAN}, fetch = FetchType.EAGER, mappedBy = "owner") private List<Bikes> bikes;</code>
Ohne Hibernate:
Ohne Hibernate müssen die verwaisten Datensätze sein explizit gelöscht, bevor der Hauptdatensatz gelöscht wird:
JPA 2.0:
JPA 2.0 führt das OrphanRemoval-Flag ein:
<code class="java">@OneToMany(mappedBy="foo", orphanRemoval=true)</code>
Mit orphanRemoval = true werden verwaiste Datensätze gelöscht, wenn die übergeordnete Entität gelöscht wird, ohne dass eine manuelle Löschung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWarum werden verwaiste Datensätze nicht mit JPA CascadeType.ALL gelöscht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!