我有一个带有 resetPasswordToken 属性的 User 类,这是当用户尝试重置密码时设置的 UUID。
在 Grails 2.5.6 上,我有这样的东西可以正常工作:
class UserController {
def forgotPassword(String email)
{
...
def user = User.findByEmail(email)
user.setPasswordToken()
user.save(flush: true()
...
}
}
class User {
...
String resetPasswordToken
static transients = ['passwordToken']
def setPasswordToken()
{
...
this.resetPasswordToken = (java.util.UUID.randomUUID() as String)
}
}
现在我将它迁移到 GRails 3.3.10,并且在调用 forgotPassword 操作后,数据库上的 resetPasswordToken 为 NULL。如果在调用 user.setPasswordToken() 后执行 println,我可以看到 resetPasswordToken 设置为 UUID,但不在数据库中。还检查了保存时的错误,并且没有错误。
奇怪的是,如果我在控制器中执行user.resetPasswordToken = "xxxx",则该值会正确保存到数据库中。
不确定 setPasswordToken() 中设置的值没有保存到数据库中发生了什么。任何指针?