Grails – MongoDB和自定义脏检查

我在我的应用程序上使用MongoDB和
Spring Security Core和UI.

几乎一切都很完美,除了这一点:

    def beforeUpdate() {
        if (isDirty('password')) {
            encodePassword()
        }
    }

这是User域类的一部分.我已经读过MongoDB插件不支持脏检查.所以我试着像这样实现自己的:

if ( User.collection.findOne(id:id).password != password ) {
            encodePassword()
        } 

但它没有用.我得到经典的无法在null对象上获取属性’密码’.

有谁知道如何从域类定义中引用实例?
我也愿意接受任何更好的想法来实现脏检查.

最佳答案 也许findOne返回null?你试过了吗:

def existing = User.collection.findOne(id:id)?.password 
if ( !existing || existing != password ) 
点赞