数据库中类型是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

 

posted @ 2025-04-04 12:45  shog808  阅读(191)  评论(0)    收藏  举报