在grails中有一个关系和删除

时间:2010-07-28 07:14:15

标签: grails one-to-one

如何删除grails中hasOne关系中的子对象 例如:

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

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

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

我总是得到相同的异常删除对象在两种方式中都通过级联重新保存。还有一个针对hasOne的动态方法(如addMo和removeFrom for hasMany)吗? 有什么帮助吗?

3 个答案:

答案 0 :(得分:4)

你可以尝试

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

如果您只删除了鼻子,则仍会设置属性face.nose。稍后调用face.save()会重新调整鼻子。

如果只设置face.nose = null(不保存),则更改不会保存到数据库中。稍后查询数据库以获取Face会给你一个带有鼻子集的Face,而save()会重新保存它。

答案 1 :(得分:0)

尝试按如下方式制作课程:

class Face {
        Nose nose
}

class Nose {    
        static belongsTo = Face
}

然后删除try:

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

答案 2 :(得分:-1)

试试这个

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