PostgreSQL 和 JDBC 使用 `setArray` 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”

use*_*168 2 java sql postgresql jdbc prepared-statement

如何在 JDBC 中设置整数数组(用setArrayfor 子句准备的语句?

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

它编译,但执行从 Postgres 返回它。

ERROR: cannot cast type integer[] to integer
Run Code Online (Sandbox Code Playgroud)

YCF*_*F_L 5

在 PostgreSQL 中你必须使用= ANY(?)而不是IN (?)

"SELECT * FROM table WHERE id = ANY(?)";
Run Code Online (Sandbox Code Playgroud)

看看这个:9.21.3。任何/一些(阵列)