当前位置: 首页 > 面试题库 >

如何将Sum SQL和Spring Data JPA一起使用?

阴靖
2023-03-14
问题内容

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

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我们还选择了sum(po.quantity)。Spring数据可以处理此问题并将结果转换为List吗?

PS:我正在使用HSQLDB嵌入为数据库。


问题答案:

在将select语句的投影从更改为p.namep.*以指示我选择了多个值,而不只是选择必须魔术转换为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。



 类似资料:
  • 我使用fetch获取数据,我想用chart.js显示它,而不是显示数据。我错在哪里?如果你帮忙我会很高兴的 我的代码在下面

  • 问题内容: 我不明白JUnit 4.8如何与Hamcrest匹配器一起工作。有内部定义了一些匹配器在。同时,也有一些 其他 的匹配器中。那么,去哪儿呢?我是否应该在项目中明确包含hamcrest JAR并忽略JUnit提供的匹配器? 特别是,我对匹配器感兴趣,并且在任何这些jar中都找不到。我还需要其他东西吗?:) 还有一个哲学问题:为什么JUnit将包包含在自己的发行版中而不是鼓励我们使用原始的

  • 我尝试使用和通过Postman发送JSON和多个文件,但它不起作用。有可能在API中同时使用这两个注释吗?

  • 当用户单击LoginFragment上的一个按钮时,我将打开另一个名为forgetpassword的片段。这是一个webview,url正在从远程服务器加载。而html中的文本字段是通过软键盘隐藏的。所以我尝试使用adjustResize,它工作得很好。但是loginfragment中的editText小部件被键盘隐藏了。 如何在我的活动中实现两个标志。请帮帮我。

  • 我有以下的类描述片段: 此代码在HiberNate 4上不起作用,因为不支持 我从Joda Time看到了关于如何使用LocalDateTime的建议,但我使用的是Java 8。

  • 我在Ubuntu 14.04中安装了phpbrew以使用PHP5.4。它工作得很好,但当我尝试使用composer时除外,composer会忽略phpbrew并安装与PHP5.5相关的依赖项。 有没有办法强制composer与phpbrew config兼容?我试图在我的作曲家中添加:php:“5.4”。json,但是它说这个要求在我的php版本中是不可能的。