首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java持久性API读取unicode JSON列

问Java持久性API读取unicode JSON列
EN

Stack Overflow用户
提问于 2019-08-29 00:46:31
回答 1查看 188关注 0票数 0

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

代码语言:javascript
复制
{
   "bannerTitle": "Copyright  © 2019",
}

JSON绑定到以下实体属性

代码语言:javascript
复制
@Column(nullable = false, columnDefinition = "json")
private String settings;

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

代码语言:javascript
复制
jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8&useUnicode=yes

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

代码语言:javascript
复制
public class StringToByteConverter implements AttributeConverter<String, byte[]> 

它修复了我的fetch查询,但是我的save查询崩溃了

代码语言:javascript
复制
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“

Spring boot :1.5.6版本

EN

回答 1

Stack Overflow用户

发布于 2019-08-31 20:00:54

尝试使用,

代码语言:javascript
复制
spring.datasource.tomcat.initSQL=SET NAMES 'utf8mb4'

其中一个答案here会重现与您相同的错误,并使用set names utf8mb4解决相同的问题。在JPA中执行相同操作的方法是给定here。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57696860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档