Basklassen Expression tillåter inte att du tillämpar aggregationer. Om du märker det, returnerar din annars klausul faktiskt NumberExpression. Allt du behöver göra är att använda den typen istället för Expression. Så din kod kan bli:
NumberExpression<Integer> sourceCases = qTable.source.
when(matchedValue1).then(new Integer(1)).
otherwise(new Integer(0));
NumberExpression<Integer> newAccountCases = qTable.isNew.
when(matchedValue2).then(new Integer(1)).
otherwise(new Integer(0));
return queryDslJdbcTemplate.queryForObject(sqlQuery,
new Mapping(qTable.filed1,
qTable.filed2,
qTable.id.count(),
sourceCases.sum(),
newAccountCases.sum());