Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将sql参数传递给jdbcTemplate.query时,我得到一个带有对象args的SQLException_Java_Spring Boot_Spring Jdbc_Jdbctemplate_Apache Calcite - Fatal编程技术网

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

Java 将sql参数传递给jdbcTemplate.query时,我得到一个带有对象args的SQLException,java,spring-boot,spring-jdbc,jdbctemplate,apache-calcite,Java,Spring Boot,Spring Jdbc,Jdbctemplate,Apache Calcite,我正试图使用Calcite Avatica JDBC驱动程序,通过Spring引导项目调用示例Druid数据库。按照大多数示例,我创建了这个查询,如果我传递newobject[]{cityName},它会抛出一个异常。然而,如果我传递Object[]{}我不会得到相同的异常 String cityName = "Aachen"; results = jdbcTemplate.query("SELECT cityName, countryName FROM wik

我正试图使用Calcite Avatica JDBC驱动程序,通过Spring引导项目调用示例Druid数据库。按照大多数示例,我创建了这个查询,如果我传递
newobject[]{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"), "");
                    }

查看bug列表-Druid不支持预先准备好的语句。

在您使用
NamedParameterJdbcTemplate
的第二个代码段中,您似乎在寻找一个名为
views
的列,但在
SELECT
语句中没有该列。也许可以修改一下,然后再试一次。在这之前它会出错——看看文档,看起来德鲁伊不支持预先准备好的语句