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