У меня есть класс User с атрибутом resetPasswordToken, который представляет собой 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, а resetPasswordToken равен NULL в базе данных после вызова действия ForgotPassword. Если я выполню println после вызова user.setPasswordToken (), я увижу, что resetPasswordToken имеет значение UUID, но его нет в БД. Также проверяется на ошибки при сохранении, и ошибок нет.
Странная вещь, если я сделаю user.resetPasswordToken = "xxxx" в контроллере, значение будет сохранено в базе данныхправильно.
Не уверен, что происходит, если значение, установленное в setPasswordToken (), не сохраняется в БД. Есть указатели?