【发布时间】: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