You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL删除UUID列表对应行报错:cannot cast type uuid[] to uuid

解决PostgreSQL通过JDBC删除指定UUID列表记录的问题

你遇到的错误根源在于:SQL语句里的IN(?)是用来匹配单个值的集合,但你传入的是UUID数组,PostgreSQL无法将数组直接转换为单个UUID类型,因此抛出类型转换错误。

修正后的代码写法

把SQL中的IN(?)替换为= ANY(?),PostgreSQL的= ANY()语法可以直接匹配数组类型的参数,完美适配你的需求,代码修改如下:

List<UUID> s = new ArrayList<>();
s.add(UUID.fromString("1a93f6f4-c1b4-489a-83dc-a7fe0a15d8ce"));
s.add(UUID.fromString("1a93f6f4-c1b4-489a-83dc-a7fe0a15d8ce"));

PreparedStatement stm = conn.prepareStatement(
        "delete from table_name where id = ANY(?)");
Array array = conn.createArrayOf("UUID", s.toArray());
stm.setArray(1, array);
int deletedCount = stm.executeUpdate();

补充说明

如果一定要用IN语法,需要动态生成和UUID列表长度一致的占位符(比如IN(?, ?)),但这种方式需要手动拼接SQL语句,不仅容易出错,还存在SQL注入风险,因此更推荐使用= ANY()的方案。

内容的提问来源于stack exchange,提问作者Adelin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:35:01