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

时间:2012-06-22 20:44:21

标签: grails gorm

问题出在主题

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

我很好奇这是不是正确的行为。如果是 - 在一次交易中删除关系和子女的最佳方法是什么?

如果不是 - 我可能做错了什么?

1 个答案:

答案 0 :(得分:3)

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

class Person {

String firstName

static hasMany = [addresses: Address]

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

<强>更新

Part 2 of GORM Gotchas对不太明显的addToremoveFrom行为进行了很好的细分。我认为它包含您正在寻找的确切信息。