2011-08-23 92 views
4

我想知道,如果grails createCriteria支持多个属性像纯SQL一样。我想列出这样的条目:Grails createCriteria group by(groupProperty function)多个属性

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

这将列出刚刚与独特的参数α和parameterB组合条目。问题是,这不起作用,有没有解决方案,或者我应该使用hsql或类似的东西?

感谢, 刁

回答

2

你可以尝试HQL。请记住,Criterias实际上是构建器,因此它们将始终只是HQL的一个子集,您可以在其中添加尽可能多的属性。

6

试图把预测,如:

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