Временные свойства Grails не учитываются при создании объекта

После перехода с Grails 1.3.7 на 2.0.4 я заметил проблему с одним из классов предметной области, где я использую временные свойства для обработки паролей.

Мой доменный класс выглядит так (упрощенно):

   package test

   class User {
String email 
String password1
String password2
//ShiroUser shiroUser

static constraints = {
    email(email:true, nullable:false, unique:true)
    password1(nullable:true,size:5..30, blank: false, validator: {password, obj ->

        if(password==null && !obj.properties['id']){
          return ['no.password']
        }
        else return true
      })
    password2(nullable:true, blank: false, validator: {password, obj ->
         def password1 = obj.properties['password1']

         if(password == null && !obj.properties['id']){
          return ['no.password']
        }
        else{
          password == password1 ? true : ['invalid.matching.passwords']
        }
      })

}
static transients = ['password1','password2']
   }

В 1.3.7 это работало в моем Bootstrap:

    def user1= new User (email: "test@test.com", password1: "123456", password2: "123456")
    user1.save()

Однако в Grails 2.0.x это приведет к ошибке, указывающей, что пароль1 и пароль2 равны нулю. То же самое происходит в моих контроллерах, если я пытаюсь сделать:

    def user2= new User (params)// params include email,password1 and password2 

Чтобы заставить его работать, я должен сделать следующее обходное решение:

    def user2= new User (params)// params include email,password1 and password2 
    user2.password1=params.password1
    user2.password2=params.password2
    user2.save()

Это довольно уродливо -и раздражает.

Может ли кто-нибудь сказать, стало ли мое использование переходных процессов недействительным в Grails 2.x, или это может быть какая-то ошибка фреймворка?

12
задан John Doppelmann 2 July 2012 в 16:14
поделиться