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

PostgreSQL JDBC执行简单查询报错:bigint与character varying类型不匹配

解决PostgreSQL类型不匹配错误:bigint = character varying

问题场景

执行以下SQL查询时触发错误:

/* crm_person */ 
select /*query crm_person*/ 
  crm_pers.*
from crm_person crm_pers
where 1=1
 and crm_pers.id = ?

错误信息:

org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = character varying
提示:没有匹配给定名称和参数类型的运算符。您可能需要添加显式类型转换。
位置:133

问题原因

crm_person表的id字段类型为bigint,但传入查询的参数是character varying(字符串)类型,PostgreSQL不支持这两种类型的隐式比较,因此抛出类型不匹配错误。

解决方案

  • 显式转换参数类型
    在SQL中把字符串参数转为bigint,修改WHERE条件:

    and crm_pers.id = ?::bigint
    

    或使用CAST函数写法:

    and crm_pers.id = CAST(? AS bigint)
    
  • 修正参数映射类型
    检查参数映射配置,确保传入的参数是数值类型(如Java中的Long/Integer,而非String),从源头匹配字段的bigint类型,无需额外转换。

  • 修改表字段类型(谨慎操作)
    若业务场景允许,可将crm_person.id的类型改为character varying,但此操作会影响依赖该字段的其他业务逻辑,需全面评估后执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:20:57