【问题标题】:MySQL JSON Data Type / JPA Encoding issueMySQL JSON 数据类型/JPA 编码问题
【发布时间】:2021-01-22 13:20:55
【问题描述】:

我对 MySQL 中的 JSON 数据类型有疑问。在该专栏中,我正在编写基于斯洛文尼亚字母的值。

这是一个使用 ObjectMapper 编写的示例:

{ "formState": [{"label": "Zaduženi", "value": "Test 1"}, {"label": "Tip", "value": "Fizičko"}] }

我正在使用 JPA 从 MySQL 数据库中获取数据,并且在有效负载中我得到如下内容:

{ "formState": [{"label": "Zaduženi", "value": "Test 1"}] }

我用来表示这个 JSON 的 Java 数据类型是 Map (HashMap)。

数据源url为:jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false

有人可以帮我解决这个问题吗?

提前谢谢你。

【问题讨论】:

  • 某处 UTF8 被视为 ASCII。您必须检查并确保您的数据库、表和字段都使用utf8mb4 字符集。这种处理该字母的特定方式似乎不在 Java 方面。
  • @coladict 我的数据库是通过这个命令创建的:CREATE DATABASE test_db CHARSET utf8 COLLATE utf8_slovenian_ci;
  • @coladict 在特定表上将字符集从 utf8 更改为 utf8mb4 没有帮助。
  • 那么您必须检查控制台是否存储正确或损坏。这将帮助您缩小问题的根源。之后我会尝试的下一件事是调试应用程序。在 JDBC 驱动程序中的 setString(int, String)getString(int) 上放置一个断点并禁用它们,然后在代码中的查询处放置一个断点,然后在驱动程序中启用它们。您应该在执行期间看到在哪个阶段对变量做了什么。
  • @coladict 当我将 JSON 更改为 TEXT 时,它运行良好。但我需要该列是 JSON 类型。

标签: mysql json spring-boot jpa objectmapper


【解决方案1】:

这可能是 Hibernate Types 框架中的一个问题。尝试使用任何现有的测试用例复制它并向我发送 Pull Request 以便我找到问题。

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2010-12-15
    相关资源
    最近更新 更多