2012-02-21 10 views
1

grails 1.3.7から2.0.1へのアップグレード後コントローラ内のコマンドオブジェクトを検証する際にfollwongの奇妙な例外が発生しました。grails upgrade 2.0.1コマンドオブジェクトの妥当性確認エラー

groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method org.codehaus.groovy.grails.orm.hibernate.HibernateGormValidationApi#validate. 
Cannot resolve which method to invoke for [class at.pdts.etsweb.commandobject.UserCommand, null] due to overlapping prototypes between: 
    [class java.lang.Object, interface java.util.List] 
    [class java.lang.Object, interface java.util.Map] 

    at org.grails.datastore.gorm.InstanceMethodInvokingClosure.call(GormEnhancer.groovy:251) 

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 

    at java.lang.Thread.run(Thread.java:662) 

マイUserCommandコマンドオブジェクトは次のようになります。次のように

package at.pdts.etsweb.commandobject 

import at.pdts.etsweb.Common 
import grails.validation.Validateable 

    @Validateable 
    class UserCommand { 
     String username 
     String password 
     String firstname 
     String lastname 
     static constraints = { 
      username blank: false, email: true 
      password blank: false, minSize: 8, maxSize: 64, validator: Common.passwordValidator 
      firstname blank: false 
      lastname blank: false 
     } 
    } 

コントローラは、データをバインドします

def save { UserCommand command -> 

... 
} 

私は上記のエラーメッセージが出ていこの時点で。私は引数save(UserCommandコマンド)としてコマンドオブジェクトを使用しようとしましたが、効果はありません。誰かがいくつかのヒントを持っていますか?

答えて

2

私の回避策は、コマンドオブジェクトクラスを/ grails-app/controllerから/ src/groovyに移動することでした。その後、エラーは消えた。