次のサンプルクラスの間には1対多の関係があります。
Class Home {
static hasMany = [loans: Loan]
int numStories
}
Class Loan {
static belongsTo = [Bank]
Home home
int yearIssued
}
Class Bank {
SortedSet loans
static hasMany = [loans: Loan]
boolean active
}
2007年に2階建ての住宅でローンが発行されたすべてのアクティブなBankオブジェクトを取得する名前付きクエリを作成しようとしています。私が試したQueriesという名前の銀行で:
static namedQueries = {
myNamedQuery { yearIssued, numStories ->
eq 'active', true
loans {
gt 'yearIssued', yearIssued
home {
eq 'numStories', numStories
}
}
}
}
上記の「home{eq...}」の部分を削除すると、クエリは正常に機能し、2階建てに制限されません。上記のように実行すると、次のようなgroovy.lang.MissingMethodExceptionエラーが発生します。
No signature of method: package.stuff.Home.call() is applicable for argument types
(package.stuff.Bank$__clinit__closure3_closure10_closure20_closure21)
values: [package.stuff.Bank$__clinit__closure3_closure10_closure20_closure21@746231ed];
Possible solutions: wait(), last(), save(), any(), getAll(), wait(long)"
2階建ての住宅にローンを組んでいる銀行に返済する銀行をどのように制限すればよいですか?