2

问题在主题中。

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

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

如果没有 - 我会做错什么?

4

1 回答 1

3

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

class Person {

String firstName

static hasMany = [addresses: Address]

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

更新

GORM Gotchas 的第 2 部分addTo对不那么明显的removeFrom行为进行了很好的细分。我认为它包含您正在寻找的确切信息。

于 2012-06-22T21:07:11.793 回答