1

我有 2 个域类:项目和用户。

通过名为 allowedUsers 的 SortedSet 对用户进行项目 hasMany。用户不属于项目。

我想查找允许特定用户查看的所有项目。所以尝试如下语法:

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

这些不起作用。并且 find 符号似乎不支持 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 回答