如何将Sum SQL和Spring Data JPA一起使用?
技术问答
234 人阅读
|
0 人回复
|
2023-09-14
|
我想根据数量加载最畅销的产品。这些是我的手表:
) L. y7 \2 v1 \Productid name1 AA 2 BBProductorderorder_id product_id quantity1 1 10 2 1 100 3 2 15 4 1 15这是我的Spring Data Repository:
0 H Q- g0 r3 G2 L: V! Z: F+ {9 }/ M@Repositorypublic interface ProductRepository extends JpaRepository @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 findTopFiveBestSeller();}我正在得到 HsqlException:找不到列:id- w! F' p, k7 g5 z3 A7 m0 Z1 F
我认为这是错误的id列无关,因为这两个表都存在。按汇总查询可用于汇总查询Spring数据?因为对Spring5 C) T G* c0 V( w
Data这对我来说似乎并不奇怪,我应该只从数据库中选择产品属性,并使用它sql我们也选择了sum(po.quantity)。Spring数据可以处理这个问题,并将结果转换为List吗?! `6 z( \1 K4 P$ g- ^
PS:我正在使用HSQLDB嵌入数据库。+ w& D4 K M! S2 `2 P8 @
% S' n9 A$ l( z0 l/ n/ B; k, \% ?8 w
解决方案:
8 c' ]. W+ [3 U- G2 L6 M I4 m 在将select句子的投影从改变到p.name,p.*指示我选择多个值,而不仅仅是魔术转换Product对象的String该方法在对象之后有效:
# Q7 X6 g4 `6 B# k, K@Repositorypublic interface ProductRepository extends JpaRepository @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 findTopFiveBestSeller();}谢谢@JMK和@JB Nizet。 |
|
|
|
|
|