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

2

Как установить массив целых чисел в 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
Теги:
jdbc
prepared-statement

1 ответ

4
Лучший ответ

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню