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

Spring Boot中JdbcTemplate.query的RowMapper泛型类型错误求助

解决Spring JDBC RowMapper泛型类型不匹配错误

错误根源

从报错信息能直接定位问题:JDBC Template的query方法期望接收org.flywaydb.core.internal.jdbc.RowMapper类型参数,但你的PersonRowMapper实现的是Spring官方的org.springframework.jdbc.core.RowMapper接口——两者属于不同类库,导致类型完全不兼容。

这类问题通常是依赖冲突或类路径优先级异常引发的,Flyway内部的RowMapper类被错误关联到了Spring JDBC Template的方法调用上。

解决方案

  1. 确认RowMapper导入正确性
    你的PersonRowMapper已经正确导入了Spring的RowMapper,保持该配置即可:

    import org.springframework.jdbc.core.RowMapper; // 正确的导入路径
    
  2. 校验JdbcTemplate类型
    确保你注入/实例化的jdbcTemplate是Spring官方的org.springframework.jdbc.core.JdbcTemplate,而非Flyway相关类。如果是Maven/Gradle项目,检查依赖配置,避免Flyway依赖覆盖Spring JDBC的类路径。

  3. 简化query方法调用
    当前调用传入了空的Object[]参数,可直接使用无参数重载方法,减少类型推断干扰:

    @Override
    public List<Person> selectAllPerson() {
        final String sql = "SELECT id, name FROM person";
        List<Person> persons = jdbcTemplate.query(sql, new PersonRowMapper());
        return persons;
    }
    
  4. 排查依赖冲突(可选)
    若上述步骤无效,用依赖分析工具(如Maven的dependency:tree、Gradle的dependencies任务)检查Flyway与Spring JDBC的依赖冲突,排除不必要的传递依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:03:19