Biểu thức lớp cơ sở không cho phép bạn áp dụng các tập hợp. Nếu bạn nhận thấy, mệnh đề khác của bạn thực sự trả về NumberExpression. Tất cả những gì bạn cần làm là sử dụng kiểu đó thay vì Biểu thức. Vì vậy, mã của bạn có thể trở thành:
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());