数据库中类型是json,实体对象字段是String,新增报错
- 问题描述
使用的ruoyi-plus框架,数据库使用的postgresql,数据库中有个字段设计为了json格式,生成的代码中实体字段类型是String。
新增该对象时报错:ERROR: column "info_detail" is of type json but expression is of type character varying 建议:You will need to rewrite or cast the expression
- 解决方法
1. 在实体类中,通过 @TableField 指定自定义类型处理器
/** * 个人信息详情 */ @TableField(typeHandler = JsonTypeHandler.class) private String infoDetail;
2. 自定义 TypeHandler
package com.ruoyi.common.jackson; import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler; /** * JsonTypeHandler * * @author SYC 2025/4/4 12:13 */ public class JsonTypeHandler extends AbstractJsonTypeHandler<String> { @Override protected String parse(String json) { return json; // 直接返回 JSON 字符串(反序列化) } @Override protected String toJson(String obj) { return obj; // 直接返回 JSON 字符串(序列化):ml-citation{ref="6,7" data="citationList"} } }
3. 数据库连接参数调整
在 PostgreSQL 连接 URL 中添加 stringtype=unspecified,允许字符串隐式转换为 JSON
url: jdbc:postgresql://localhost:5432/xxx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&stringtype=unspecifie
播种和收获通常不在一个季节,而中间的过程叫做坚持~

浙公网安备 33010602011771号