com.highgo.jdbc.util.PSQLException: 错误: 操作符不是唯一的: integer = character varying(mybatis postgreSql)
postgresql抛出的异常,是因为数据库类型是int类型,而java传参String造成。有2种解决方案,建议第二种方案更方便简洁
解决方案一:
代码
public int deleteSysUserSignByIds(String ids) { return sysUserSignMapper.deleteSysUserSignByIds(Convert.toStrArray(ids)); }
XML:
<delete id="deleteSysUserSignByIds" parameterType="String"> delete from sys_user_sign where id in <foreach item="id" collection="array" open="(" separator="," close=")"> #{id} </foreach> </delete>
而数据库的id类型是int类型
修改方案:
public int deleteSysUserSignByIds(String ids) { return sysUserSignMapper.deleteSysUserSignByIds(Convert.toLongArray(ids)); }
将传入的string数组转换为integer数组或者long数据即可。
当然对应接口方法的接收参数类型也要做相应改变。
解决方案二:(只需修改下xml文件)
解决方案是在xml内将string类型的参数变量 强转为int类型,在变量后加::int
<delete id="deleteGoodsRecordByIds" parameterType="String"> delete from goods_record where id in <foreach item="id" collection="array" open="(" separator="," close=")"> #{id}::int </foreach> </delete>
本文原创,转载必追究版权。