次の1対多の関係があるとしましょう:
Site has many Users
User belongs to one Site
私はこのような関係を設定しました
class Site {
static hasMany = [users:User]
...
}
と
class User {
static belongsTo = [site:Site]
int number
String username
...
}
基本的に、特定のサイトの特定のユーザーのユーザー名を更新し、ユーザー オブジェクトを返したいと考えています。私はサイトと新しいユーザー名を知っているので、基準ビルダーを使用して対応する接続を検索しようとする関数があります。
class funcClass {
User func(Site site, int number, String newUserName) {
def results = User.createCriteria()
results.list = {
eq('number', number)
site {
idEq(site.id)
}
}
...
def user = results[0]
...
return user
}
}
次のような例外が発生します。
groovy.lang.MissingMethodException: No signature of method: static com.myapp.Site.call() is application for arguemtns types: ( funcClass$_closure )
これは Criteria Builder で可能ですか? サイトからユーザーへと基準を構築する別の方法でクエリを実行できることに気づきましたが、サイトのすべてのユーザーをループして、更新しようとしていた数に一致するユーザーを見つける必要があります。HQL クエリを使用する必要がありますか?