2

私は最近、名前の最初と最後の部分をそれぞれ表すNameプロパティfirstとで呼び出されるドメイン クラスを持つ Grails コード ベースを継承しました。lastこのドメインを利用した単体テストを書いているときに、これらのプロパティの名前がGrails 内の最初最後のメソッドと同じであることに起因するいくつかの問題に遭遇しました。これで、プロパティの名前を変更することで問題を解決できますが、Grails 内でプロパティ名firstlast.

つまり、私が受け取っていたエラーは、Grailsがプロパティに制約をNo signature of method: com.example.Name.first() is applicable for argument types: () values: [] Possible solutions: first(), first(java.lang.String), first(java.util.Map), list(), list(java.util.Map), print(java.lang.Object)適用しようとしたときのものでした。nullable: true

のソースは次のNameとおりです。

class Name {
    String first
    String middle
    String last
    static belongsTo = [person : Person]

    static constraints = {
        first(nullable:true)
        middle(nullable:true)
        last(nullable:true)
    }

    public static Name findOrCreate(String first, String middle, String last){
        def name
        name = Name.createCriteria().get{
            and{
                eq('first', first)
                eq('middle', middle)
                eq('last', last)
            }
        if(!name){
            name = new Name()
            name.first = first
            name.middle = middle
            name.last = last
        }       
        return name
    }

    static mapping = {
        cache true
    }

}
4

1 に答える 1