我有2个域类:项目和用户。
项目通过名为 allowedUsers 的排序集在用户上具有许多。用户不属于项目。
我想查找允许特定用户查看的所有项目。所以尝试这样的语法:
Project.findAll{ it.allowedUsers.contains( userA ) }
Project.findAll{ userA in it.allowedUsers }
这些不起作用。而且查找表示法似乎不支持类似 ThatContains 运算符的东西。
我怎样才能实现我的目标?
条件应该有效,请查看 http://grails.org/doc/latest/guide/GORM.html#criteria 中的"查询关联"部分。您可以尝试以下方法吗:
def c = Project.createCriteria()
def results = c.list {
allowedUsers{
eq('id', userA.id)
}
}
您也可以尝试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])