Grails标准';行不通

Grails标准';行不通,grails,criteria,nhibernate-projections,Grails,Criteria,Nhibernate Projections,在我的应用程序中,我使用createCriteria根据一些条件获取列表。 角色映射包含用户 我使用以下代码: def getTeamOfCompany(def company,def offset=0){ def c = roleMapping.createCriteria() def result = c.list{ eq('company',company) eq('isCurrentCompany',true

在我的应用程序中,我使用createCriteria根据一些条件获取列表。 角色映射包含用户

我使用以下代码:

def getTeamOfCompany(def company,def offset=0){
        def c = roleMapping.createCriteria()
        def result = c.list{
            eq('company',company)
            eq('isCurrentCompany',true)
            firstResult offset
            maxResults 10
            distinct('user')
            user{
                order "lastname", "asc"
            }
        }
    return result
}
我使用distinct是为了不让同一个用户使用两次,但它不起作用


如果我将投影放在distinct上,我将得到一个用户列表,而不是角色映射

您可以尝试对提供角色映射集合的以前代码执行
result.unique{it.user}
。投影实际上为您选择了列您到底想要什么?您希望每个用户都有一个角色吗?为什么?result.unique{it.user}是解决问题的巧妙方法,但它破坏了条件查询的正确分页行为。