【问题标题】:PostgreSQL & JDBC set array of ints using `setArray` throw an exception "cannot cast type integer[] to integer"PostgreSQL 和 JDBC 使用 setArray 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”
【发布时间】:2018-04-29 07:39:34
【问题描述】:

如何在 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

【问题讨论】:

    标签: java sql postgresql jdbc prepared-statement


    【解决方案1】:

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

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

    看看这个:9.21.3. ANY/SOME (array)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2021-01-26
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多