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 @ ladParentntfernen 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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage