Grails 域类如何级联';全部删除孤立';对一个孩子来说,它没有参考?

Grails 域类如何级联';全部删除孤立';对一个孩子来说,它没有参考?,grails,gorm,grails-domain-class,all-delete-orphan,Grails,Gorm,Grails Domain Class,All Delete Orphan,在Grails中,可以有一个子类: class Child { Father father static belongsTo = [Father, Mother] } 有两个父类 class Mother{ } class Father { } 如果我father.delete(),Grails就会抛出一个数据库错误,说明father无法删除,因为子仍然存在 如果父亲类没有直接引用孩子类,我如何级联全部删除孤儿孩子 我无法使所需的仅部分工作,但这对我来说很有用: cla

在Grails中,可以有一个子类:

class Child {
    Father father
    static belongsTo = [Father, Mother]
}
有两个父类

class Mother{
}

class Father { 
}
如果我
father.delete()
,Grails就会抛出一个数据库错误,说明
father
无法删除,因为
仍然存在


如果
父亲
类没有直接引用
孩子
类,我如何级联
全部删除孤儿
孩子

我无法使所需的仅部分工作,但这对我来说很有用:

class Father {
  static hasMany = [children: Child]
}

class Child {
  static belongsTo = [father: Father]
}

void testDeleteItg() {
    def father = new Father().save()
    def child = new Child()
    father.addToChildren child
    child.save()
    def childId = child.id

    father.delete(flush:true)
    assertNull(Child.get(childId))
}

使用hasMany使其具有双向性

class Mother{
  static hasMany = Child
}
class Father{
  static hasMany = Child
}

这样做会使级联工作正常,这样当您删除父对象之一时,子对象也会被删除

如果孩子因为我试图避免而被删除,这会删除父亲吗?不会,因为父亲对孩子是一对多的关系,删除孩子不会删除父亲。感谢您所做的一切,我遇到的一个问题是如何使用hasMany映射参数执行此操作。如果孩子同时属于父亲和母亲,并且如果父亲被删除,是否有方法防止孩子被删除?是否将
static hasMany=child
替代
statichasMany=[children:Child]