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

时间:2010-09-18 10:29:55

标签: grails groovy gorm

我可以写:

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

2 个答案:

答案 0 :(得分:1)

尝试使用其他名称,而不是“交易”,看看你是否得到了预期的结果。

我拿了你的代码,只是更改了对象的名称,它工作正常

答案 1 :(得分:0)

你的第二个例子应该像亚伦指出的那样工作。有时候我发现当数据库没有结果时你就会收到错误,所以也许就是这样。

顺便说一下,

list()是默认的,所以如果你真的想缩短它,你甚至可以这样做:

def transactions = Transaction.createCriteria() {