问题在主题中。
目前,我观察到的行为是,当我调用时Parent.removeFromChilds(child)
,child 不会从我的数据库中删除(即我可以使用 找到它Child.findBy...(args)
)。
我很好奇这是否是正确的行为。如果是 - 在一个事务中删除关系和子项的最佳方法是什么?
如果没有 - 我会做错什么?
问题在主题中。
目前,我观察到的行为是,当我调用时Parent.removeFromChilds(child)
,child 不会从我的数据库中删除(即我可以使用 找到它Child.findBy...(args)
)。
我很好奇这是否是正确的行为。如果是 - 在一个事务中删除关系和子项的最佳方法是什么?
如果没有 - 我会做错什么?
默认情况下,如果您删除一对多的拥有方,则删除级联。如果你只是删除孩子,它不会被删除。您可以通过在关系的拥有方指定“all-delete-orphan”的自定义级联行为来更改它。来自 Grails 文档:
class Person {
String firstName
static hasMany = [addresses: Address]
static mapping = { addresses cascade: "all-delete-orphan" } }
更新
GORM Gotchas 的第 2 部分addTo
对不那么明显的removeFrom
行为进行了很好的细分。我认为它包含您正在寻找的确切信息。