当删除特定域类的实例时,我需要对其他域类进行更改。做这个的最好方式是什么?我不想等到提交或刷新,所以我不认为“beforeDelete”回调会有所帮助。我想“覆盖”删除,做一些事情并调用super.delete():
class Foo {
Bar bar
void delete() {
if (bar) bar.foo = null
super.delete() -- this doesn't work
}
}
目前我已将“删除”命名为取消,但想将其称为“删除”,但之后我无法调用原始的删除()。
答案 0 :(得分:5)
要添加@sbglasius所说的内容,这里是link to the docs on GORM events
完整示例:
class Foo {
Bar bar
def beforeDelete() {
if(bar) {
bar.foo = null
}
}
}
答案 1 :(得分:1)
我自己没有试过重写GORM方法,但这可能会对所涉及的内容有所了解:
"Overloading" standard GORM CRUD methods
我会将“删除”逻辑放在服务中并调用它:
class FooService {
def deleteInstance(foo) {
if (foo?.bar) {
foo.bar.foo = null
// might have to call foo.bar.save() here
// then foo.bar = null
}
foo.delete()
}
}