2010-07-28 16 views
6

Cómo debería eliminar el objeto secundario en una relación hasOne en griales por ejemplo:tiene uno relaciones y eliminación en griales

class Face { 
static hasOne = [nose: Nose] 
} 
class Nose { 
Face face 
static belongsTo= Face 
} 

Traté de eliminar el objeto infantil en dos formas

1. face.nose.delete() 
2. nose.delete() 

Siempre obtengo la misma excepción. Objeto eliminado rescatado por cascada en ambos sentidos. Y uno más ¿tengo algún método dinámico (como addTo y removeFrom para hasMany) para hasOne? ¿Alguna ayuda?

+0

¿Ha intentado establecer face.nose = null; – Emyr

+0

Sí, también lo hizo. Pero no sirve de nada ... aún obtengo la misma excepción – prabhap

+1

¿Realmente necesitas 'static belongsTo = Face'? –

Respuesta

0

intentar hacer su clase de la siguiente manera:

class Face { 
     Nose nose 
} 

class Nose {  
     static belongsTo = Face 
} 

continuación para eliminar intento:

def f = Face.get(1) 
f.nose.delete() 
f.delete() 
+1

Creo que la Cara no se debe eliminar solo la Nariz. –

4

Usted podría intentar

face.nose = null 
face.save() 
nose.delete() 

Si sólo elimina la nariz y luego la cara propiedad. la nariz todavía está puesta. Una llamada posterior de face.save() volvería a guardar la nariz.

Si solo configura face.nose = null (sin guardar), entonces el cambio no se guardará en la base de datos. Una consulta posterior a la base de datos para obtener un Rostro le daría un Rostro con el morro y un guardar() lo volvería a guardar.

-1

probar este

noseId = face.nose.id 
face.nose = null 
nose.get(noseId).delete(flush:true) 
Cuestiones relacionadas