在grails中,为什么我必须为条件创建一个变量?

在grails中,为什么我必须为条件创建一个变量?,grails,groovy,gorm,Grails,Groovy,Gorm,我可以写: def c = Transaction.createCriteria() def transactions = c.list { projections { groupProperty("product") countDistinct("id") } maxResults(pageBlock) firstResult(pageIndex) } 但我不能写这个: def transactions = Transacti

我可以写:

def c = Transaction.createCriteria() 
def transactions = c.list {
    projections {
        groupProperty("product")
        countDistinct("id")
    }
    maxResults(pageBlock)
    firstResult(pageIndex)
}
但我不能写这个:

def transactions = Transaction.createCriteria() .list {
    projections {
        groupProperty("product")
        countDistinct("id")
    }
    maxResults(pageBlock)
    firstResult(pageIndex)
}

为什么会这样?为什么需要变量
c
来保存标准?

尝试使用另一个名称,而不是“transaction”,然后查看是否得到所需的结果


我使用了您的代码,只是更改了对象的名称,效果很好

尝试使用另一个名称,而不是“transaction”,然后看看是否得到了所需的结果


我接受了您的代码,只是更改了对象的名称,效果很好

您的第二个示例应该如Aaron所指出的那样有效。有时我发现当数据库没有结果时,你会出错,所以可能就是这样

顺便说一下,list()是默认值,因此如果您真的想缩短它,您甚至可以这样做:

def transactions = Transaction.createCriteria() {

你的第二个例子应该像Aaron指出的那样有效。有时我发现当数据库没有结果时,你会出错,所以可能就是这样

顺便说一下,list()是默认值,因此如果您真的想缩短它,您甚至可以这样做:

def transactions = Transaction.createCriteria() {