Tôi khuyên bạn nên tạo một lớp POJO chỉ để lưu trữ kết quả của truy vấn đó:
package com.mypackage;
public class CustomerAmountResult{
private String surname;
private BigDecimal amountSum;
public CustomerAmountResult(String surname, BigDecimal amountSum){
this.surname = surname;
this.amountSum = amountSum;
}
// getters / setters
}
Sau đó, thay đổi truy vấn của bạn thành như sau:
@Query("select NEW com.mypackage.CustomerAmountResult(
o.customer.surname, sum(o.amount))
from Order as o
group by o.customer.surname")
List<CustomerAmountResult> findCustomersBySumOfAmount();
Nhờ đó, bạn sẽ không cần phải phân tích cú pháp kết quả được đặt theo cách thủ công.