Grails removeFrom*方法应该从数据库中删除子项,还是只删除父子关系?

Grails removeFrom*方法应该从数据库中删除子项,还是只删除父子关系?,grails,gorm,Grails,Gorm,问题在主题中 目前,我观察到的行为是,当我调用Parent.removeFromChilds(child)时,child不会从我的数据库中删除(即,我可以通过child.findBy…(args))找到它) 我很好奇这是否是正确的行为。如果是-在一个事务中删除关系和子项的最佳方法是什么 如果否-我会做错什么?默认情况下,如果删除一对多的拥有方,则删除级联。如果只删除子项,它将不会删除。您可以通过在关系的拥有方指定“all delete Orphant”的自定义级联行为来更改这一点。从Grails

问题在主题中

目前,我观察到的行为是,当我调用
Parent.removeFromChilds(child)
时,child不会从我的数据库中删除(即,我可以通过
child.findBy…(args)
)找到它)

我很好奇这是否是正确的行为。如果是-在一个事务中删除关系和子项的最佳方法是什么


如果否-我会做错什么?

默认情况下,如果删除一对多的拥有方,则删除级联。如果只删除子项,它将不会删除。您可以通过在关系的拥有方指定“all delete Orphant”的自定义级联行为来更改这一点。从Grails文档:

class Person {

String firstName

static hasMany = [addresses: Address]

static mapping = { addresses cascade: "all-delete-orphan" } }
更新


对不太明显的
addTo
removeFrom
行为进行了很好的细分。我认为它包含了您要查找的确切信息。

我认为这不是真的。当我执行类似的parent.removeFromChildren(child)和parent.save(flush:true)操作时,子对象将从集合中删除并从数据库中删除(假设没有错误)。@Gregg:我的操作与此完全相同。没有错误。我唯一能想到的是验证行为的方法:当我对父级进行单元测试时,它会按照描述的那样工作(而且我还从来没有用真正的DB进行过测试)。