1

我是 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} 以过滤掉经理,但这将是一个两步过程并造成性能瓶颈。

4

1 回答 1

1
UserOrganization.createCriteria().list{
    inList('organizaton',organizationList)
    user {
        inList('authorities',authoritiesList)
    }
} 

顺便提一句。您不需要显式编写authoritiesGORM 会为您创建它:

User {
    static hasMany = [authorities: Role]
}

如果您想确保权限属于Set或其他集合类型,则应编写:Set authorities

于 2012-12-22T11:33:20.047 回答