При передаче sql параметров в jdbcTemplate.query я получаю SQLException с объектными аргументами - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь использовать драйвер Calcite Avatica JDB C, вызывающий образец базы данных Druid с помощью проекта Spring Boot. Следуя большинству примеров, я создал этот запрос, и он выдает исключение, если я передаю 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"), "");
                    }

1 Ответ

0 голосов
/ 18 марта 2020

Просмотр списка ошибок - Друид не поддерживает подготовленные заявления.

...