我是新手,但仍然遇到性能问题。
我有三个域类:
User{
Set authorities
static hasMany = [authorities: Role]
}
Organization{
//more code
}
UserOrganization{
User user
Organization organization
}
分配给用户的角色(权限)有很多(“ROLE_ADMIN”,“ROLE_MANAGER”)
在一种情况下,我有一个组织列表,我需要找出所有具有这些组织的管理员权限(ROLE_MANAGER)的用户。
我试过像这样使用GORM:
UserOrganization.createCriteria().list{
inList('organizaton',organizationList)
//but do not know how to filter out users with ROLE_MANAGER authority
}
有没有办法像这样在单个GORM查询中完成它?
我可以获取这些组织的所有用户的列表,然后运行keepAll {closure}来过滤掉经理,但这将是一个两步过程,并且会造成性能瓶颈。
最佳答案
UserOrganization.createCriteria().list{
inList('organizaton',organizationList)
user {
inList('authorities',authoritiesList)
}
}
顺便说一句。您不需要显式编写
authorities
,GORM会为您创建它:User {
static hasMany = [authorities: Role]
}
如果要确保授权机构为
Set
或其他集合类型,则应输入:Set authorities