6

我应该如何删除 grails 中 hasOne 关系中的子对象,例如:

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

我尝试通过两种方式删除子对象

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

我总是得到相同的异常 Deleted object 以两种方式被级联重新保存。还有一个我有任何用于hasOne的动态方法(比如hasMany的addTo和removeFrom)吗?有什么帮助吗?

4

3 回答 3

4

你可以试试

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

如果你只删除鼻子,那么属性 face.nose 仍然设置。稍后调用 face.save() 将重新保存鼻子。

如果您只设置 face.nose = null (不保存),则更改不会保存到数据库中。稍后对数据库进行查询以获取 Face 将为您提供带有鼻子设置的 Face,并且 save() 将重新保存它。

于 2010-07-30T14:23:36.827 回答
0

尝试使您的课程如下:

class Face {
        Nose nose
}

class Nose {    
        static belongsTo = Face
}

然后删除尝试:

def f = Face.get(1)
f.nose.delete()
f.delete()
于 2010-07-28T15:49:21.217 回答
-1

尝试这个

noseId = face.nose.id
face.nose = null
nose.get(noseId).delete(flush:true)
于 2015-07-07T11:18:53.230 回答