Использование "где в" в Spring-JDBC - PullRequest
1 голос
/ 12 января 2012

Есть ли способ удалить группу элементов, используя "where ... in" в SQL, например, так:

HashSet<String> idStrings = ...;
SimpleJdbcTemplate template = getTemplate();
template.update("DELETE FROM records WHERE idstring IN (?)", idStrings);

Я пытаюсь заставить работать старый код, использующий этот метод, но всякий раз, когда я пытаюсь запустить его, драйверы Oracle JDBC выдают исключение:

QL состояние [99999];код ошибки [17004];Неверный тип столбца;вложенным исключением является java.sql.SQLException: недопустимый тип столбца

Это с ojdbc5 11.2.0.1.0 и spring-jdbc 3.0.3

1 Ответ

1 голос
/ 12 января 2012

Возможно, но вам нужен один заполнитель (?) для каждого идентификатора, и каждый идентификатор должен быть связан отдельно.

Вы также можете использовать NamedParameterJdbcTemplate , что

[...] также позволяет расширить список значений до соответствующего количества заполнителей.

Будьте осторожны, чтобы не вводить слишком много значений в набор идентификаторов.Oracle ограничивает их до 1000, например.

...