Tôi muốn tải các sản phẩm bán chạy nhất theo số lượng. Đây là bảng của tôi:Làm thế nào để sử dụng một nhóm bằng Sum SQL với JPA dữ liệu mùa xuân?
Product
id name
1 AA
2 BB
Productorder
order_id product_id quantity
1 1 10
2 1 100
3 2 15
4 1 15
Đây là mùa xuân của tôi liệu Repository:
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
@Query(value = "select top 5 p.name, sum(po.quantity) as total_quantity from product p " +
"inner join productorder po " +
"on p.id = po.product_id " +
"group by p.id, p.name " +
"order by total_quantity desc", nativeQuery = true)
List<Product> findTopFiveBestSeller();
}
Tôi nhận HsqlException: Cột không tìm thấy: id
Tôi nghĩ rằng lỗi này không có bất cứ điều gì để làm với cột id, vì nó ở đó cho cả hai bảng. Làm "nhóm theo Tổng truy vấn" làm việc với dữ liệu Spring? Bởi vì có vẻ hơi lạ đối với tôi vì Spring Data chỉ nên chọn các thuộc tính sản phẩm từ cơ sở dữ liệu, và với sql này, chúng tôi cũng chọn tổng (po.quantity). Dữ liệu Spring có thể xử lý điều này và chuyển đổi kết quả thành một List không?
PS: Tôi đang sử dụng HSQLDB được nhúng dưới dạng DB.
Làm cách nào để truy vấn trả về tên và số tiền kỳ diệu trả về Danh sách, vì Sản phẩm có ID và tên? Truy vấn của bạn không trả về sản phẩm, vì vậy loại trả về không được liệt kê –
Lỗi này có khả năng đến từ nhóm, bạn đang cố gắng nhóm theo p.id nhưng không có trong danh sách lựa chọn của bạn. – JMK
Mùa xuân có DomainClassConverter, chuyển đổi từ các đối tượng cụ thể. Ít nhất đó là những gì tôi nghĩ .. Bây giờ tôi đã thay đổi nó thành "chọn top 5 p *" nó hoạt động ... Cảm ơn! "chọn top 5 p.id" không hoạt động. – akcasoy