java - JPA 查询结果为空
问题描述
嗨,我有以下代码:
控制器:
@GetMapping("/salesTrend")
private List<Object[]> salesTrend(){
int[] profit = {1,2,3,4,5,6,7,8,9,10,11,12};
return customerRepository.findByProfit(profit);
}
存储库:
@Query(
value = "SELECT MONTH(f_date), SUM(profit) as p from finance where MONTH(f_date) = ?1",
nativeQuery = true)
List<Object[]> findByProfit(int[] profit);
结果是空的,我很难知道为什么会这样,因为我已经在 xampp 上测试过它并且它工作正常我不知道我做错了什么谢谢
解决方案
由于@ppeterka 的评论,我已经解决了它我刚刚创建了一个包含所有月份的数组,然后我循环数组中的每个元素,一次将它们放在查询中
int[] profit = {1,2,3,4,5,6,7,8,9,10,11,12,13};
List<Object> profitList = new ArrayList<>();
for(int i = 1; i < profit.length; i++) {
List<Object[]> results = customerRepository.findByProfit(i);
for(Object[] obj : results) {
Map<Object, Object> profits = new LinkedHashMap<>();
profits.put("Month", obj[0]);
profits.put("Profit", obj[1]);
profitList.add(profits);
}
}
推荐阅读
- windows - 如何在另一个目录的命令行中使用python
- python - 遍历一个数据帧,然后根据两个条件从另一个数据帧添加数据
- c# - 如何将字符串数组(从文本文件中读取)更改为 Int 数组?这样我就可以搜索和排序数据
- android - nopCommerce 的 OAuth2.0
- sql - 创建表命令 SQL 缺少右括号
- rest - Flat REST API(无嵌套关系)
- c# - EF Code-First 如何使用复合键从表中读取 A
- node.js - 使用 Passport,如果我使用令牌进行身份验证,序列化用户的目的是什么?
- if-statement - Groovy - 列表中的 if 语句
- java - 如何调用在受 SSL 保护的服务器上运行的 API