8

次のドメインクラスがあります。

class User {
   static hasMany = [roles:String]
}

role を持つすべてのユーザーを見つけたいと思いますROLE_ADMIN。動的ファインダーでそれを行う可能性はありますか? user.findAllByRoles('ROLE_ADMIN')私にエラーを与えるようです。

更新: Class にクラスインスタンスAのリストがあり、両方がドメイン クラスである関連付けをクエリするのは非常に簡単です。ただし、ここで classはドメイン クラスであり、classは単純な Java 文字列です。BABAB

別のドメイン オブジェクトのリストを含む関連付けを照会するためのコードは、次のようになります。

`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'])

ただし、findAllorwhereクエリほど有用ではありません。メソッドを連鎖できないため、たとえば「xxx」のようなユーザー名でユーザーをfindAll取得する他のメソッドを定義するには、クエリ全体を書き直す必要があります。上記の条件を式で表すことは可能でしょうか?ROLE_ADMINHQLHQLwhere

4

2 に答える 2

5

多分あなたは次のようなことをすることができます:

すでにユーザーリスト(userList)がある場合

def list = userList.findAll { user -> user.roles =~ 'ROLE_ADMIN' }

この助けを願っています!

于 2012-09-19T13:19:52.317 に答える
0

私は同じ問題を抱えています DetachedCriteriaを介して関連プロパティの値でレコードを見つける方法

私はいくつかの調査を行いましたが、私が発見したように、それは不可能です。GORM DSL 自体には、値が関連して含まれていることを確認する方法がありません。これには、SQL にある基準のみが含まれます: ANDORIN

しかし!Association Reduxによるクエリの条件で、関連付けをテーブルとして結合できます

于 2014-02-13T00:17:32.713 に答える