Использование 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] }
Но это не дает ожидаемого результата. Любое руководство по этому вопросу будет высоко оценено. Спасибо!