我想按数量加载畅销产品。这些是我的表格:
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
这是我的Spring Data 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();
}
我收到 HsqlException:找不到列:id
我认为这个错误与id列没有任何关系,因为它存在于两个表中。 “按分组查询分组”是否适用于Spring数据?因为对我来说这似乎有点奇怪,因为Spring Data应该只从数据库中选择产品属性,并且使用这个sql我们也选择总和(po.quantity)。 Spring数据可以处理这个并将结果转换为List吗?
PS:我使用的是嵌入式数据库的HSQLDB。
答案 0 :(得分:4)
将select语句投影从p.name
更改为p.*
以指示我选择的是多个值,而不仅仅是必须神奇地转换为Product
个对象的String对象, :
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
@Query(value = "select top 5 p.*, 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();
}
感谢@JMK和@JB Nizet。