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

为什么Spring Boot native query原生查询总是返回null?

问题排查与解决步骤

断点无法命中90%以上的场景都是Repository未被Spring正确扫描注册,优先排查该项

  • 校验Repository接口注册状态
    确认定义getServices方法的JPA Repository接口添加了@Repository注解,且所在包在Spring Boot的组件扫描范围内。如果启动类和Repository不在同一级包下,需要在启动类上添加@EnableJpaRepositories(basePackages = "你的Repository接口所在包全路径")显式指定扫描路径,确保Spring为该接口生成代理实现类。
  • 校验参数与SQL执行结果
    在调用getServices方法的位置打印三个入参acctid、bizid、active的取值,和你直接在MySQL中执行的SQL参数做对比,避免入参为空、字符串前后带空格、类型不匹配导致查询无结果。
    同时可以在配置文件中添加如下配置,打印框架实际执行的SQL和绑定的参数,复制到MySQL中手动执行验证:
    spring.jpa.show-sql=true
    logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace
    
  • 校验实体字段映射关系
    原生查询默认使用下划线转驼峰的命名规则做字段映射,检查Service实体类的字段是否和customize_service表的字段匹配。如果存在不匹配的字段(比如表字段service_name对应实体字段svcName),需要在对应实体字段上添加@Column(name = "service_name")显式指定映射的表字段名,避免字段映射失败返回空对象。
  • 异常定位
    完整输出Eclipse抛出的异常栈:如果是方法不存在、代理类初始化失败类的异常,属于Repository注册问题;如果是参数绑定、SQL语法类异常,检查@Param注解的参数名是否和SQL中占位符一致,SQL语法是否符合你使用的MySQL版本规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:00:02