首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据对象在GORM查询中的字段过滤出对象

根据对象在GORM查询中的字段过滤出对象
EN

Stack Overflow用户
提问于 2012-12-22 16:17:43
回答 1查看 399关注 0票数 1

我是grails的新手,遇到了性能问题。我有三个域类:

代码语言:javascript
复制
User{
Set authorities
static hasMany = [authorities: Role]
}

Organization{
//more code
}

UserOrganization{
User user
Organization organization
}

为用户分配了多个角色(权限) ('ROLE_ADMIN','ROLE_MANAGER')

在一个场景中,我有一个组织列表,我需要找出这些组织的所有具有管理员权限(ROLE_MANAGER)的用户。

我尝试这样使用GORM:

代码语言:javascript
复制
UserOrganization.createCriteria().list{
inList('organizaton',organizationList)
//but do not know how to filter out users with ROLE_MANAGER authority
} 

有没有办法在像这样的单个GORM查询中完成它?我可以获得这些组织的所有用户的列表,然后运行retainAll{closure}来筛选出经理,但这将是一个两步的过程,并且会造成性能瓶颈。

EN

回答 1

Stack Overflow用户

发布于 2012-12-22 19:33:20

代码语言:javascript
复制
UserOrganization.createCriteria().list{
    inList('organizaton',organizationList)
    user {
        inList('authorities',authoritiesList)
    }
} 

顺便说一句。您不需要显式地编写authorities GORM将为您创建它:

代码语言:javascript
复制
User {
    static hasMany = [authorities: Role]
}

如果您想要确保授权将是Set或其他集合类型,则应该这样写:Set authorities

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14001201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档