通过下面的依赖,可以将 mysql 的 json 列字段(mysql 5.7及以上的版本支持),映射成 Java Bean

            <dependency>
                <groupId>com.vladmihalcea</groupId>
                <artifactId>hibernate-types-52</artifactId>
                <version>2.14.0</version>
            </dependency>

https://github.com/vladmihalcea/hypersistence-utils

在 Class + Field上加下下面的注解:

@Table(name = "test_job_meta")
@Data
@Entity
@TypeDef(name = "json", typeClass = JsonType.class)
public class MerlionJobMeta {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", insertable = false, nullable = false)
    private Long id;

    @Column(name = "job_name")
    private String jobName;

    @Type(type = "json")
    @Column(name = "json_string", columnDefinition = "json")
    private ScheduleBasedJob jsonString;

    @Column(name = "create_time")
    private Timestamp createTime;

    @Column(name = "update_time")
    private Timestamp updateTime;


}

如果出现 mysql 里面的 json 字段值是中文编码正常的,但经过映射之后就乱码了,有两种解决思路:

总则:在保证整条链路上的 读写侧 + 数据库编码都为 utf-8 的前提下,使用下面的调整方案即可

1,修改 mysql 列为 text 类型,低于 mysql 5.7 版本不支持 json 类型

2,升级 mysql 驱动 jar 的版本,升级 jdbc 驱动 jar 版本大于 5.7

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.28</version>
            </dependency>

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐