Kind mit JPA aus der Sammlung entfernen
Ich verwende JPA über Hibernate in meiner Web-App. Hier sind zwei Entitäten (nur Getter werden angezeigt):
class Child {
private Parent parent;
@ManyToOne(optional=false)
@JoinColumn(name="parent_id", referencedColumnName="parent_id", nullable=false, updatable=false)
public Parent getParent() {
return parent;
}
}
class Parent {
private Collection<Child> children;
@OneToMany(fetch=FetchType.EAGER, mappedBy="parent", cascade={CascadeType.ALL})
public Collection<Child> getChildren() {
return children;
}
}
Wie du siehstParent
undChild
beziehen sich auf "Eins-zu-Viele".
Nun muss ich ein @ ladParent
ntfernen Sie zum Beispiel einige oder alle untergeordneten Elemente und speichern Sie die Änderungen. Unten ist Code, der bei mir nicht funktioniert:
Parent p = entityManager.find(Parent.class, 12345L); // load entity
p.getChildren().clear(); // remove all children
entityManager.merge(p); // try to save
Child-Entitäten werden im obigen Beispiel nicht entfernt. Jetzt muss ich @ manuell anrufentityManager.remove()
für jedes Kind.
ibt es eine einfachere Möglichkeit, die Sammlung von untergeordneten Objekten zu verwalte
Bitte beachten Sie, dass ich keine Funktionen für den Ruhezustand verwenden möchte, sondern nur reines JPA.