Grails createCriteria分组依据(groupProperty函数)多个属性

Grails createCriteria分组依据(groupProperty函数)多个属性,grails,grails-domain-class,Grails,Grails Domain Class,我想知道GrailsCreateCriteria是否像纯sql那样支持按多个属性分组。我想列出如下条目: def criteria = DomainClass.createCriteria() def results = criteria.list { groupProperty('parameterA') groupProperty('parameterB') } 这将只列出具有唯一参数A和参数B组合的条目。问题是这不起作用,是否有任何解决方案,或者我应该使用hsql或类似的

我想知道GrailsCreateCriteria是否像纯sql那样支持按多个属性分组。我想列出如下条目:

def criteria = DomainClass.createCriteria()
def results = criteria.list {
    groupProperty('parameterA')
    groupProperty('parameterB')
}
这将只列出具有唯一参数A和参数B组合的条目。问题是这不起作用,是否有任何解决方案,或者我应该使用hsql或类似的东西

谢谢,
Mateo

你可以试试HQL。请记住,标准实际上是构建器,因此它们始终只是HQL的一个子集,您可以根据需要在组中添加任意多的属性。

尝试放置投影,例如:

def criteria = DomainClass.createCriteria()
def results = criteria.list {
    projections{
        groupProperty('parameterA')
        groupProperty('parameterB')
    }
}
我写了一些测试

void test2xGroupProperty(){
    def pablo = new Artist(name: 'Pablo').save()
    def salvador = new Artist(name: 'Salvador').save()
    new Portrait(artist: pablo, name: "Les Demoiselles d'Avignon 1", value: 10.00).save()
    new Portrait(artist: pablo, name: "Les Demoiselles d'Avignon 2", value: 10.00).save()
    new Portrait(artist: pablo, name: "Les Demoiselles d'Avignon 3", value: 10.00).save()
    new Portrait(artist: salvador, name: "The Persistence of Memory 1", value: 20.00).save()
    new Portrait(artist: salvador, name: "The Persistence of Memory 2", value: 20.00).save()
    new Portrait(artist: salvador, name: "The Persistence of Memory 3", value: 20.00).save()
    def artistValue = Portrait.withCriteria{
        projections{
            groupProperty('value')
            groupProperty('artist')
        }
    }
    assert [[10.00, pablo], [20.00, salvador]] ==  artistValue
}
请参见此处的更多示例: