前言
Mybatis Plus中自带很多Json类型处理器,在MySQL中直接使用没有任何问题,但在PostgreSQL中却报错:
Caused by: org.postgresql.util.PSQLException: 错误: 字段 "xxx" 的类型为 json, 但表达式的类型为 character varying
解决方案
用法上没有变化,仅在PostgreSQL 的url后追加参数stringtype=unspecified
yml
spring:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/xxx?stringtype=unspecified
PostgreSQL 的 JDBC 驱动默认会把所有参数都当作varchar 类型发送。对于 JSON 字段,必须告诉驱动不要预设类型,让 MyBatis-Plus 的 TypeHandler 接管处理。