如何删除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)吗? 有什么帮助吗?
答案 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)