1

Project と User の 2 つのドメイン クラスがあります。

プロジェクト hasMany on User は、allowedUsers と呼ばれる SortedSet を介して実行されます。ユーザーはプロジェクトに属していません。

特定のユーザーが表示を許可されているすべてのプロジェクトを検索したいと考えています。したがって、次のような構文を試してください:

Project.findAll{ it.allowedUsers.contains( userA ) }
Project.findAll{ userA in it.allowedUsers }

これらは機能しません。また、検索記法は ThatContains 演算子のようなものをサポートしていないようです。

どうすれば目的を達成できますか?

4

2 に答える 2

4

基準が機能するはずです。 http://grails.org/doc/latest/guide/GORM.html#criteriaの「関連付けのクエリ」セクションをご覧ください。次のことを試してみてください:

def c = Project.createCriteria()
def results = c.list {
    allowedUsers{
        eq('id', userA.id)
    }
}
于 2013-10-04T16:31:06.447 に答える
1

whereクエリを試すこともできます

def query = Project.where{
    allowedUsers{id == userA.id}
}

def results = query.list()

またはHQL

def query = """
             select p from Project as p 
             inner join p.allowedUsers as user 
             where user.id = :user
            """

def results = Project.executeQuery(query, [user: userA.id])
于 2013-10-04T17:26:01.543 に答える