Как установить массив целых чисел в 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
В PostgreSQL вы должны использовать = ANY(?)
Вместо IN (?)
"SELECT * FROM table WHERE id = ANY(?)";
Взгляните на это: 9.21.3. ЛЮБОЙ/НЕКОТОРЫЙ (массив)