Использование groupProperty и countDistinct в критериях Грааля

Я использую Grails 1.2.4. Я хотел бы знать, как я могу сортировать по «countDistinct» (по убыванию) и с groupProperty внутри проекций.

Вот мои домены:

class Transaction {

    static belongsTo = [ customer : Customer, product : Product ]

    Date transactionDate = new Date()

    static constraints = {
        transactionDate(blank:false)    
    }

}

class Product {

    String productCode

    static constraints = {
        productCode(blank:false)    
    }
}

В терминах MySQL это то, что я хочу:

select 
    product_id,
    count(product_id)
from
    transaction
group by
    product_id
order by
    count(product_id) desc

В общем, я хотел бы получить список продуктов (или просто идентификатор продукта), отсортированный по количеству транзакций, которые были у продукта (по убыванию)

Это мое предположение:

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

def products = transactions.collect { it[0] }

Но это не дает ожидаемого результата. Любое руководство по этому вопросу будет высоко оценено. Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос