【问题标题】:Grails createCriteria group by (groupProperty function) multiple attributesGrails createCriteria group by(groupProperty函数)多个属性
【发布时间】:2011-08-23 12:22:20
【问题描述】:

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

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

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

谢谢, 马特奥

【问题讨论】:

    标签: grails grails-domain-class


    【解决方案1】:

    尝试放投影,例如:

    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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-20
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        相关资源
        最近更新 更多