【问题标题】:Hibernate DataException on saving Č, Ć characters保存 Č、Ć 字符时出现 Hibernate DataException
【发布时间】:2017-09-04 09:31:54
【问题描述】:

正如标题所说,我使用的是 Hibernate ORM,每当我尝试保存带有 Č 或 Ć 的内容时,hibernate 都会抛出“无法执行查询”错误。我使用的是 utf8,Š、Ž、Đ 字符工作得很好。我迷路了……这是cfg文件:

<property name="connection.url">jdbc:mysql://localhost:3306/eventi_orm</property>
    <property name="connection.username">root</property>
    <property name="connection.password"></property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.CharSet">utf8</property>
    <property name="hibernate.connection.characterEncoding">utf8</property>
    <property name="hibernate.connection.useUnicode">true</property>
    <property name="show_sql">true</property>
    <property name="format_sql">false</property>

这是输出:

Exception in thread "AWT-EventQueue-0" org.hibernate.exception.DataException: could not execute statement
...
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xC4\x87' for column 'name' at row 1

【问题讨论】:

  • "数据截断" ... UTF-8 字符具有可变长度。 BTW 数据库(mysql)应该精确配置,因为排序和其他问题。古时候我们把 utf-8 字符串存储在 ASCII 数据库列中,也会出现类似的问题
  • 我相信这是同样的问题:stackoverflow.com/questions/2108824/…
  • @Goran- 尝试使用数据库客户端并将包含 Č 和 Ć 的字符串插入到您的数据库中。如果错误仍然存​​在,则很可能是您的数据库配置不正确。

标签: java sql hibernate exception


【解决方案1】:

对不起,这是一个愚蠢的疏忽。我在 hibernate cfg 文件中指定了 utf8,但在创建数据库时忘记了这样做。

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2019-10-29
    • 2014-01-13
    • 2012-03-02
    • 2017-10-02
    相关资源
    最近更新 更多