我是grails的新手,遇到了性能问题。我有三个域类:
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查询中完成它?我可以获得这些组织的所有用户的列表,然后运行retainAll{closure}来筛选出经理,但这将是一个两步的过程,并且会造成性能瓶颈。
发布于 2012-12-22 19:33:20
UserOrganization.createCriteria().list{
inList('organizaton',organizationList)
user {
inList('authorities',authoritiesList)
}
} 顺便说一句。您不需要显式地编写authorities GORM将为您创建它:
User {
static hasMany = [authorities: Role]
}如果您想要确保授权将是Set或其他集合类型,则应该这样写:Set authorities
https://stackoverflow.com/questions/14001201
复制相似问题