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