2011-10-27 14 views
5

En el motor de la aplicación de Google java jpa uno a muchos relación, ¿cómo puedo eliminar los elementos secundarios. Por ejemplogoogle app engine java jpa uno a muchos eliminar

Class Parent{ 
    // key defined here 

    @OneToMany(cascade=CascadeType.ALL, mappedBy="parent") 
    private List<Child> childs = null; 
. 
. 
. 
} 

Class child{ 
//key defined here too 
@ManyToOne 
private Parent parent; 
. 
. 
. 
} 

creé

Parent parent=new Parent() 
parent.getChilds().add(new Child(1)); 
parent.getChilds().add(new Child(2)); 
//save parent 
. 
. 

y ahora quiero eliminar tanto el niño 1 y 2 y añadir un nuevo niño 3

Parent p=//getParent 
p.setChilds(new ArrayList<Child>())//remove all older childs 
parent.getChilds().add(new Child(3));//adding new child 3 
. 
. 

Pero cuando de nuevo buscar el el mismo padre tengo todos los 3 hijos pero no solo el hijo 3.

¿Puede alguien guid e yo.

Gracias, Ramesh.V

Respuesta

0

Tal vez hacer

parent.getChilds().clear(); 

ya que ahorra borrar y volver a crear una lista, y pueden tener el beneficio añadido de trabajar en torno a algún tema GAE. PD. ¡el plural de "niño" es "niños"!

+0

sentimos que no trabaja ... pero la limpieza o la creación de un nuevo objeto vacío ambos son algunos hicieron ninguna diferencia en el trabajo ... –

0

Puede intentar eliminar la relación del lado propietario, en este caso Hijo # padre. Por lo tanto, para cada elemento secundario en la colección principal intente: eliminar el elemento secundario o establecer el elemento padre en nulo. Algo así como:

Parent p = //getParent 
List<Child> children = p.getChildren(); 
for (Child c : children) { 
    c.setParent(null); 
} 

children.clear(); 
children.add(new Child(3));