4

我想知道 grails createCriteria 是否像纯 sql 那样支持按多个属性分组。我想列出这样的条目:

def criteria = DomainClass.createCriteria()
def results = criteria.list {
    groupProperty('parameterA')
    groupProperty('parameterB')
}

这将仅列出具有唯一 parameterA 和 parameterB 组合的条目。问题是这不起作用,有什么解决方案还是我应该使用 hsql 或类似的东西?

谢谢,马特奥

4

2 回答 2

7

尝试进行预测,例如:

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
}

在此处查看更多示例: https ://github.com/fabiooshiro/plastic-criteria/blob/master/src/groovy/plastic/criteria/CriteriaDocTests.groovy

于 2012-10-21T01:13:43.143 回答
2

你可以试试HQL。请记住,Criterias 实际上是构建器,因此它们将始终只是 HQL 的一个子集,您可以在其中添加任意数量的属性到您的组中。

于 2011-08-23T13:46:33.493 回答