次のドメインクラスがあります。
class User {
static hasMany = [roles:String]
}
role を持つすべてのユーザーを見つけたいと思いますROLE_ADMIN
。動的ファインダーでそれを行う可能性はありますか? user.findAllByRoles('ROLE_ADMIN')
私にエラーを与えるようです。
更新: Class にクラスインスタンスA
のリストがあり、両方がドメイン クラスである関連付けをクエリするのは非常に簡単です。ただし、ここで classはドメイン クラスであり、classは単純な Java 文字列です。B
A
B
A
B
別のドメイン オブジェクトのリストを含む関連付けを照会するためのコードは、次のようになります。
`User.findAll { roles { role_name=='ROLE_ADMIN' } }`
私が探しているのは、たとえば次のように、文字列の値を指定する方法です。
`User.findAll { roles {THIS_VALUE=='ROLE_ADMIN' }}`
更新 2: 私が見つけた限りでは、プリミティブ型のコレクションで基準を使用することはできません。ただし、HQL を使用することは可能です。
User.findAll("from User a where :roles in elements(roles)",[roles:'ROLE_ADMIN'])
ただし、findAll
orwhere
クエリほど有用ではありません。メソッドを連鎖できないため、たとえば「xxx」のようなユーザー名でユーザーをfindAll
取得する他のメソッドを定義するには、クエリ全体を書き直す必要があります。上記の条件を式で表すことは可能でしょうか?ROLE_ADMIN
HQL
HQL
where