В Grails, почему я должен создать переменную для критериев? - PullRequest
1 голос
/ 18 сентября 2010

Я могу написать:

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 ]

1 голос
/ 18 сентября 2010

попробуйте использовать другое имя, а не «транзакция», и посмотрите, получите ли вы желаемые результаты.

Я взял ваш код и просто изменил имя объекта, и он отлично работает

0 голосов
/ 21 сентября 2010

Ваш второй пример должен работать, как указал Аарон. Иногда я обнаруживал, что при отсутствии результатов из БД появляются ошибки, так что, возможно, это так.

list (), кстати, по умолчанию, поэтому, если вы действительно хотите сократить его, вы можете даже сделать это:

def transactions = Transaction.createCriteria() {
...