【发布时间】:2012-10-07 21:28:38
【问题描述】:
我在用户和组织之间有多对多的关系。当用户被删除时,我想从他的所有组织中删除用户,所以这基本上是我想出的:
class User {
...
def beforeDelete() {
def user = User.get(id)
Organization.all.each {
it.removeFromMembers(user)
it.save()
}
}
}
这令人惊讶地不起作用,因为User.get(id) 返回 null 即使具有给定 id 的用户在数据库中,当我查看日志时,甚至没有执行任何 sql 语句。
所以我尝试使用load() insted 方法。 ObjectNotFoundException 就是结果。所以我尝试了这个,因为我很绝望:
def user = User.find("from User as u where u.id = ?", [1L])
出于某种原因,这可行。但是现在,it.removeFromMembers(user) 的行会抛出 NullPointerException。
我尝试将这个逻辑放在我的 UserController 中并且它有效!
这是为什么?为什么我不能在域类中这样做?这使得 beforeDelete 钩子(以及所有其他钩子)变得毫无用处。
【问题讨论】: