You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring环境下数据库有数据但JPA返回空数组问题排查

问题分析与解决:Spring查询数据库返回空数组

嘿,我一眼就发现了你的代码里有个非常明显的笔误,这大概率就是导致返回空数组的原因!

最直接的问题:Controller参数传递错误

看你的Controller方法里,调用Repository的findByCodeAndVersion时,第二个参数居然传成了appCode,而不是方法接收的appVersion:

// 错误写法:第二个参数误用了appCode
return configRepository.findByCodeAndVersion(appCode, appCode);

这就意味着你实际在查询appCode=MANDL_LIVE且appVersion=MANDL_LIVE的数据,而不是你URL里传的appVersion=12.0,数据库里自然没有匹配的记录,所以返回空数组。

修正后的Controller代码

把第二个参数改成appVersion即可:

@RequestMapping(value = "/config", params = { "appCode", "appVersion" }, method = RequestMethod.GET)
public List<AppConfig> getConfig(@RequestParam(value = "appCode", required = true) String appCode, @RequestParam(value = "appVersion", required = true) String appVersion) {
    System.out.println(appCode);
    System.out.println(appVersion);
    // 修正:第二个参数传入正确的appVersion
    return configRepository.findByCodeAndVersion(appCode, appVersion);
}

额外排查点(如果修正后仍有问题)

  • 确认数据库app_config表中确实存在app_code='MANDL_LIVE'且app_version='12.0'的记录,注意字符串的大小写、格式完全匹配(比如数据库里是12.0还是12.0.0,有没有多余空格)。
  • 检查JPQL语句是否正确:你的@Query写法是没问题的,实体类字段和数据库列名的映射也正确(appCode对应app_code,appVersion对应app_version)。
  • 仔细核对SQL日志:你说日志显示生成了正确的SQL,但可以再确认日志里的参数值是否和你预期的一致——如果之前的笔误存在,日志里的第二个参数应该是MANDL_LIVE而不是12.0。

内容的提问来源于stack exchange,提问作者WISHY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:32:31