unidirectional onetomany one many ejemplo java hibernate orm jpa one-to-many

java - ejemplo - onetomany cascade



jpa sacando al niño de la colección (1)

Para JPA 2.0 puede establecer orphanRemoval=true de @OneToMany

Para JPA 1.0, debe utilizar anotaciones específicas de hibernación. Esa es la anotación @Cascade (en lugar del atributo en cascade ), con un valor de

@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})

Hibernate 3.5+ implementa JPA 2.0

Estoy usando JPA sobre Hibernate en mi aplicación web. Aquí hay dos entidades (solo se muestran los captadores):

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 ves, Parent e Child relacionan como "uno a muchos".

Ahora necesito cargar una instancia principal, eliminar algunos o todos los secundarios y guardar los cambios. A continuación se muestra el código que no funciona para mí:

Parent p = entityManager.find(Parent.class, 12345L); // load entity p.getChildren().clear(); // remove all children entityManager.merge(p); // try to save

Las entidades hijo no se eliminan en el ejemplo anterior. Ahora tengo que llamar a entityManager.remove() manualmente para cada hijo.

¿Hay alguna forma más fácil de manejar la colección de niños? Tenga en cuenta que no quiero usar la funcionalidad específica de Hibernate, solo JPA puro.

Saludos, Andrey