Java Hibernate mysql json转换UTF8字符串错误
对于Hibernate类型的扩展,我使用Vladmichalcea/Hibernate类型Java Hibernate mysql json转换UTF8字符串错误,java,mysql,json,hibernate,Java,Mysql,Json,Hibernate,对于Hibernate类型的扩展,我使用Vladmichalcea/Hibernate类型 @Entity @TypeDef ( name = "jsonb-node", typeClass = JsonStringType.class ) public class Catalog { ... @Type (type = "jsonb-node") @Column (columnDefinition = "json") public ArrayNode tags; } 将JSO
@Entity
@TypeDef (
name = "jsonb-node",
typeClass = JsonStringType.class
)
public class Catalog {
...
@Type (type = "jsonb-node")
@Column (columnDefinition = "json")
public ArrayNode tags;
}
将JSON对象从MySQL转换为ArrayNode时,UTF8字符的转换不正确
List <Catalog> catalog = em.createNativeQuery (
"select *"
+ "from Catalog c"
+ "where name regexp ('" + nameRegExpr + "*')"
+ "and isTemplate = true"
, Catalog.class
)
.getResultList ();
List catalog=em.createNativeQuery(
“选择*”
+“来自目录c”
+“其中名称regexp('”+nameRegExpr+“*”)”
+“和isTemplate=true”
,Catalog.class
)
.getResultList();
结果,我得到一个字符串的形式
{“键”:“???????”}
字符串的字节数
7B226B6579223A223F3F227D
MySQL中的源数据存储正确
[
{
“钥匙”:“钥匙”
}
]
字节
5b0a097b0a0909226b657922203a2022d0bdd0bed0b2d18bd0b9220a097d0a5d
如何正确配置类型转换?我在编码方面也遇到了同样的问题。所以,首先通过执行查询来检查数据库编码:
从information\u schema.SCHEMATA WHERE schema\u name=“schemaname”中选择default\u character\u set\u name代码>。如果是UTF-8。在hibernate.cfg.xml的hibernate.connection.url
属性结尾:jdbc:mysql://localhost/myTableName?UseUnicode=true&characterEncoding=utf8
。这对我很有帮助。正确读取带有utf8字符的varchar类型的其他字段