Grails:标准构建器中的字段总和

时间:2010-10-04 18:30:23

标签: hibernate grails controller

在控制器中创建条件后,我无法创建特定字段的运行总和

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

    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') 
    } 
}

2 个答案:

答案 0 :(得分:5)

您可以使用投影:

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

可以找到可用的预测列表here

答案 1 :(得分:0)

它真的是一个'运行总和',即它是在每一行增加还是你需要所有行的总和?

可以使用Projection完成所有行的总和(读取由CriteriaBuider提供的“projection”闭包的doco)。

如果它是一个运行总计,你需要在控制器中执行该操作,或者在循环结果列表中的行时查看自己。

欢呼声