Estoy usando JPA sobre Hibernate en mi aplicación web. A continuación se muestran (sólo son captadores) dos entidades:jpa eliminación del hijo de la colección
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 children; @OneToMany(fetch=FetchType.EAGER, mappedBy="parent", cascade={CascadeType.ALL}) public Collection getChildren() { return children; } }
Como se ve Parent
y Child
relacionas como "uno-a-muchos".
Ahora necesito cargar una instancia de Parent
, eliminar algunos o todos los elementos secundarios y guardar los cambios. A continuación se muestra el código que no funciona para mí: entidades
Parent p = entityManager.find(Parent.class, 12345L); // load entity p.getChildren().clear(); // remove all children entityManager.merge(p); // try to save
niño no se eliminan en el ejemplo anterior. Ahora tengo que llamar manualmente al entityManager.remove()
para cada niño.
¿Hay alguna manera más fácil de administrar la recolección de niños? Tenga en cuenta que no quiero utilizar la funcionalidad específica de Hibernate, solo JPA puro.
Regards, Andrey
posible duplicado de [APP CascadeType.ALL no elimina los huérfanos.] (Http: //stackoverflow.com/questions/306144/jpa-cascadetype-all-does-not-delete-orphans) –