grails - grails独特的投影获取不同项目的结果计数

标签 grails spring-security criteria hibernate-criteria grails-2.0

我正在使用grails-2.5.6版本。我正在使用spring-security-core插件。我在UserRole表上有一个条件查询。我想按角色查找所有不同的用户。它工作正常。但是问题是分页效果。当我指望列表时,它指望的是UserRole列表对象。但是我需要依靠不同的投影项目。有人可以帮我吗?以下是我的尝试:

def list(Integer max) {
    def userInstanceList = UserRole.createCriteria().list(params) {
        createAlias('user', 'au')
        createAlias('role', 'ar')
        projections {
            distinct("user")
        }
        if (params.roleId) {
            eq('ar.id', params.getLong("roleId"))
        }
    }
    def totalCount = userInstanceList.totalCount
    [userInstanceList: userInstanceList, totalCount: totalCount]
}

在这里,totalCount是UserRole列表的数量。但是我想要独特的投影数。

最佳答案

我想稍微不同地解决这个问题,您想分析用户,而不是用户角色。

所以我会做类似的事情:

List<User> usersWithRole = UserRole.createCriteria().list(params) {
      role {
        eq('id', params.getLong("roleId"))
      }
    }*.user

    int count = usersWithRole.size()

除非当然有成百上千的用户,在这种情况下,我不想每次都加载所有用户,而是恢复为SQL。

这是您正在使用的Spring Security的自定义版本吗?我从未见过具有基于'long'的ID的Roles,通常,键是代表授权机构名称的字符串。

关于grails - grails独特的投影获取不同项目的结果计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709677/

相关文章:

validation - 具有一对多的未保存域类以随机顺序返回子对象

spring - Grails 3 - 使用 JSON View 时放心给出 SnippetException 的 Spring Rest 文档

grails - 为什么在 intelliJ 中构建 grails 时会收到许多重复的编译消息

java - Apache 可以基于 Tomcat webapp 的 Spring SecurityContext 限制访问吗?

java - Hibernate Criteria Left 连接两个表

mysql - 根据所选列的名称对其执行操作

grails - 覆盖 grails.views.default.codec ='html' 配置回 'none'

java - Spring Boot + Security - 启用 CSRF 时无法上传文件(多部分)

java -/api-url 在 Spring Boot Security 中有一个空的过滤器列表

grails - 使用Grails条件获得一个属性的不同结果