我有以下域类:
class User {
static hasMany = [roles:String]
}
Run Code Online (Sandbox Code Playgroud)
我想找到每个有角色的用户ROLE_ADMIN.有没有可能用动态查找器做到这一点?user.findAllByRoles('ROLE_ADMIN')似乎给了我一个错误.
UPDATE:这是很容易查询的关联,其中类A具有类的列表B实例和两A和B的域类.但是这里的类A是一个域类,类B是一个简单的Java字符串.
查询包含其他域对象列表的关联的代码如下所示:
`User.findAll { roles { role_name=='ROLE_ADMIN' } }`
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种指定String值的方法,例如:
`User.findAll { roles {THIS_VALUE=='ROLE_ADMIN' }}`
Run Code Online (Sandbox Code Playgroud)
更新2:据我所知,不可能使用具有原始类型集合的标准.但是可以使用HQL:
User.findAll("from User a where :roles in elements(roles)",[roles:'ROLE_ADMIN'])
Run Code Online (Sandbox Code Playgroud)
但是,它不像查询findAll或where查询那样有用.我不能链接findAll方法,所以定义其他方法,例如:获取ROLE_ADMIN用户名像'xxx'的用户需要重写整个HQL查询.也许有可能以表达的HQL形式表达上述条件where?
也许你可以这样做:
如果您已有用户列表(userList)
def list = userList.findAll { user -> user.roles =~ 'ROLE_ADMIN' }
Run Code Online (Sandbox Code Playgroud)
希望这有帮助!
| 归档时间: |
|
| 查看次数: |
3133 次 |
| 最近记录: |