【问题标题】:Java Persistence API read unicode JSON column [duplicate]Java Persistence API 读取 unicode JSON 列 [重复]
【发布时间】:2020-01-01 22:39:54
【问题描述】:

我在通过 JPA 访问的 MySQL 数据库上有一个可本地化/unicode JSON 列。我的 API 响应中的 unicode 字符串出现乱码

{
   "bannerTitle": "Copyright  © 2019",
}

JSON 绑定到以下实体属性

@Column(nullable = false, columnDefinition = "json")
private String settings;

我的数据源 URL 的 Unicode 标记如下

jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8&useUnicode=yes

我尝试在以下几行中使用转换器

public class StringToByteConverter implements AttributeConverter<String, byte[]> 

修复了我的获取查询,但我的保存查询因

而崩溃
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.

在使用 JPA 持久性库时,正确的修复方法是什么?

操作系统:Ubuntu 18.04
MySQL:5.7.27
Java:openjdk 版本“1.8.0_222”
春季启动:1.5.6.RELEASE

【问题讨论】:

  • hmmm.. 我的问题更多是关于如何在 JPA/java 级别实现这一点

标签: java mysql json jpa


【解决方案1】:

尝试使用,

spring.datasource.tomcat.initSQL=SET NAMES 'utf8mb4'

here 的答案之一重现了您遇到的相同错误,并使用set names utf8mb4 解决了相同的错误。在 JPA 中执行相同的方法是 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2017-06-28
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2018-03-25
    相关资源
    最近更新 更多