回答

收藏

如何将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。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则