【问题标题】:has one relationships and deletion in grails在grails中有一个关系和删除
【发布时间】:2010-07-28 07:14:15
【问题描述】:

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

【问题讨论】:

  • 你试过设置 face.nose = null;
  • 是的。但它没有用..我仍然得到同样的例外
  • 你真的需要static belongsTo= Face吗?

标签: grails one-to-one


【解决方案1】:

你可以试试

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

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

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

【讨论】:

    【解决方案2】:

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

    class Face {
            Nose nose
    }
    
    class Nose {    
            static belongsTo = Face
    }
    

    然后删除试试:

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

    【讨论】:

    • 我认为不应该只删除鼻子。
    【解决方案3】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多