У меня была похожая проблема, и я нашел решение в ответе на другой вопрос.
Вы можете обойти эту проблему, используя метод addProjectionToList ().Посмотрите на «Вариант 2» в следующем ответе для примера:
https://stackoverflow.com/a/7652787
Критерии DSL для этого конкретного примера будут следующими:
def results = Report.createCriteria().list {
projections {
sum('correctResponses')
sum('allResponses')
addProjectionToList(Projections.sqlProjection(
'(sum(correct_responses) / sum(all_responses)) as grade',
['grade'] as String[],
[Hibernate.INTEGER] as Type[]
), 'sumProjection')
groupProperty('name')
}
and {
if (startDate)
ge("date", startDate)
if (endDate)
lt("date", endDate + 1) //add one day so search is inclusive of end date
'in'("id", ids)
}
order(orderColumn ?: 'name', orderDirection ?: 'asc')
}