以下のように projections を使って集計した結果を取った場合
1 2 3 4 5 6 7 8 |
def result = Domain.createCriteria().list { projections { sum("price", "priceSum") // sum(price) as priceSum groupProperty("field1", "field1") // group by field1 } } |
戻り値のListの各要素は Object の配列(Object[])になっている。
なので、 Data Binding を使って new できない
1 2 3 4 5 |
result.each { SumDomain sumDomain = new SumDomain(it) } |
以下のように resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP) を付け加えるとうまくいく
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def result = Domain.createCriteria().list { resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP) projections { sum("price", "priceSum") groupProperty("field1", "field1") } } result.each { SumDomain sumDomain = new SumDomain(it) } |
Listの各要素は Map で受け取れるので Data Binding が使える