将sql参数传递给jdbcTemplate.query时,我得到一个带有对象args的SQLException

问题描述 投票:0回答:1

我正在尝试使用Calcite Avatica JDBC驱动程序通过Spring Boot项目调用示例Druid数据库。遵循大多数示例,我设计了此查询,如果我传递new Object[] { cityName },它将引发异常。但是,如果我传递Object[] {},则不会得到相同的异常。

        String cityName =  "Aachen";
        results = jdbcTemplate.query("SELECT cityName, countryName FROM wikipedia WHERE cityName = ?",
                new Object[] { cityName },
                (rs, rowNum) -> {
                    return new City(cityName, rs.getString("countryName"));
                }
        );

这里是例外

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT cityName, countryName FROM wikipedia WHERE cityName = ?]; SQL state [00000]; error code [-1]; Error -1 (00000) : while preparing SQL: SELECT cityName, countryName FROM wikipedia WHERE cityName = ?; nested exception is org.apache.calcite.avatica.AvaticaSqlException: Error -1 (00000) : while preparing SQL: SELECT cityName, countryName FROM wikipedia WHERE cityName = ?

如果切换到NamedParameterJdbcTemplate,我什至会得到相同的异常

namedParameterJdbcTemplate.query("SELECT cityName, countryName, comment FROM wikipedia WHERE cityName = :cityName",
                    new MapSqlParameterSource()
                            .addValue("cityName", "Aachen"),
                    (rs, rowNum) -> {
                        return new SponsoredPostStats(sponsoredPostId, rs.getInt("views"), "");
                    }
java spring-boot spring-jdbc jdbctemplate apache-calcite
1个回答
0
投票

浏览错误列表-Druid不支持准备好的语句。

© www.soinside.com 2019 - 2024. All rights reserved.