使用lambda和JdbcTemplate查询方法显示出错误的错误

时间:2017-02-28 06:40:39

标签: java lambda sonarqube spring-jdbc

当我编译此代码时,它正在显示 [错误]方法查询(String,Object [],ResultSetExtractor)对于类型JdbcTemplate

是不明确的
Collection<MyType> col = getJdbcTemplate().query(someQuery, new Object[]{param},
    rs -> {
        Map<Long, MyType> map = new HashMap();
        while (rs.next()) {
        // mapping logic
        }
        return map.values();
    });

但如果我将rs转换为(ResultSetExtractor<Collection<MyType>>),它会以某种方式正确编译。

Collection<MyType> col = getJdbcTemplate().query(someQuery, new Object[]{param},
    (ResultSetExtractor<Collection<MyType>>)  rs -> {
        Map<Long, MyType> map = new HashMap();
        while (rs.next()) {
        // mapping logic
        }
        return map.values();
    });

但我的IDE(带声纳)将其报告为冗余演员,将lambda体内的所有内容报告为未使用。我正在使用jdk 1.8.0_121

请有人对此有所了解,谢谢

1 个答案:

答案 0 :(得分:3)

JdbcTemplate有3个名为query的方法,其中第一个参数是String,第二个参数是Object[]

前两个参数的第三个参数的功能接口采用ResultSet类型的单个参数:

这就是为什么编译器需要一些帮助来找出你的意思。

那个IDE /声纳有缺陷,无法看到演员是必要的,只是一个错误。