Hibernate Grails:criteria builder中字段的总和

Hibernate Grails:criteria builder中字段的总和,hibernate,grails,controller,Hibernate,Grails,Controller,在控制器中创建条件之后,我不知道如何创建特定字段的运行总和 我目前正在使用以下方法创建一组记录: def b = Tapes.createCriteria() def yesterday = b.list(sort: 'migratedDate', order: 'asc') { between ("migratedDate", dat.minus(1), dat) } 并用 def num2 = Tapes.countByMigratedDateBe

在控制器中创建条件之后,我不知道如何创建特定字段的运行总和

我目前正在使用以下方法创建一组记录:

    def b = Tapes.createCriteria()
    def yesterday =  b.list(sort: 'migratedDate', order: 'asc') {
        between ("migratedDate", dat.minus(1), dat)
    }
并用

def num2 = Tapes.countByMigratedDateBetween(dat.minus(1), dat)
我的域中的一个字段是“migratedDuration”,系统以毫秒为单位返回进程的运行时。控制器中是否有方法创建此数字的总和?或者我应该通过相应的.gsp文件中的javascript来实现这一点吗

再次感谢

可怕的骇客

这很有效,谢谢

def todayTime = aa.list() { 
    between ("migratedDate", dat.minus(4), dat.minus(3)) 
    projections { sum('migratedDuration') 
    } 
}

您可以为此使用投影:

def b = Tapes.createCriteria()
def yesterday = b.list() {
    projections {
        sum('migratedDuration')
    }
}

可以找到可用的投影列表。

它真的是一个“运行总和”吗,即它是每行递增还是需要所有行的总和

所有行的总和可以通过一个投影完成(读取CriteriaBuider提供的“projections”闭包的文档)

如果它是一个运行总数,则需要在控制器中执行此操作,或者在结果列表中的行之间循环时查看自己

干杯


谢谢!下面的操作完成了:def todayTime=aa.list(){between(“migratedDate”、dat.减号(4)、dat.减号(3))投影{sum('migratedDuration')}