如何使用 Sum SQL 和 Spring Data JPA 的组



我想按数量加载畅销产品。这些是我的表格:

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 数据存储库:

@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();
}

我收到 Hsql异常:找不到列:id

我认为此错误与id列无关,因为它适用于两个表。"按总和分组查询"是否适用于 Spring 数据?因为这对我来说似乎并不奇怪,因为 Spring Data 应该只从数据库中选择产品属性,并且使用此 sql,我们还选择了 sum(po.quantity(。Spring 数据可以处理这个问题并将结果转换为列表吗?

PS:我正在使用嵌入的HSQLDB作为DB。

将 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尼泽。

最新更新