gpt4 book ai didi

grails - 获取最新的10个注册用户-Spring Security Grails

转载 作者:行者123 更新时间:2023-12-02 14:57:59 25 4
gpt4 key购买 nike

我需要获取统计信息应用程序中的最后10个注册用户(普通用户)。该应用程序具有两个角色:普通用户和管理员用户。

在我的User类( Spring 安全性)中,我具有 dateCreated 字段,并可以通过以下查询获取 Controller 中的最后10个注册用户:

User.listOrderByDateCreated(max: 10, order: 'desc')

但是我只想让普通用户(不包括管理员)之间使用它。通过此查询,我可以获得所有普通用户:
UserRole.findAllByRole(role).user

我要运行什么查询?谢谢。

最佳答案

令人惊讶的是,这是一个棘手的问题,因为用户对角色没有直接的处理,因此GORM助手没有提供太多帮助。使用直接的Groovy列表操作,我们可以得到您想要的。

def users = User.list().findAll { it.authorities.contains role }
.sort { it.dateCreated }
.reverse()
.take(10)

//or…

def users = UserRole.findAllByRole(role).user
.sort { it.dateCreated }
.reverse()
.take(10)

但是,如果您有大量用户,这将是获取10个用户的低效率方法。更好的选择可能是使用休眠条件:
def users =  UserRole.createCriteria().list(max: 2) { 
eq "role", role
user {
order 'dateCreated', 'desc'
}
projections { property 'user' }
}

或者,如果需要,您可以通过 executeQuery()使用HQL查询:
def users = User.executeQuery("from User where id in (select user.id from UserRole where role.id = :roleId) order by dateCreated desc", [roleId: role.id], [max: 10])

关于grails - 获取最新的10个注册用户-Spring Security Grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com