PostgreSQL и JDBC задают массив целых чисел с помощью `setArray` генерируют исключение« не может преобразовать тип integer [] в целое число »

Как установить массив целых чисел в JDBC (подготовленный оператор с setArray для предложения in?

String query = "SELECT * FROM table WHERE id IN (?)";
// other things.
// ArrayList<Integer> some_ids;
preparedStatement.setArray(1, conn.createArrayOf("INTEGER", some_ids.toArray()));

Он компилируется, но выполнение возвращает это из Postgres.

ERROR: cannot cast type integer[] to integer
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
699
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В PostgreSQL вы должны использовать = ANY(?) вместо IN (?)

"SELECT * FROM table WHERE id = ANY(?)";

Взгляните на это: 9.21.3. ЛЮБОЙ / НЕКОТОРЫЙ (массив)

Другие вопросы по теме