我有以下域类:
class User {
static hasMany = [roles:String]
}
我想找到每个有角色的用户ROLE_ADMIN
。动态查找器有没有可能做到这一点?user.findAllByRoles('ROLE_ADMIN')
似乎给了我一个错误。
更新:查询关联非常容易,其中 ClassA
有一个类B
实例列表,并且两者A
都是B
域类。但是这里的 classA
是一个领域类,而 classB
是一个简单的 Java 字符串。
查询包含另一个域对象列表的关联的代码如下所示:
`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
查询有用。我不能链接findAll
方法,因此定义其他方法,例如:获取ROLE_ADMIN
用户名如“xxx”的用户需要重写整个HQL
查询。也许可以HQL
用表达式的形式表达上述条件where
?