【发布时间】:2012-01-23 00:25:21
【问题描述】:
我正在使用 import.sql 将我的开发数据写入数据库。我正在使用 MySQL Server 5.5,我的 persistence.xml 在这里:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="MobilHM" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>tr.com.stigma.db.entity.Doctor</class>
<class>tr.com.stigma.db.entity.Patient</class>
<class>tr.com.stigma.db.entity.Record</class>
<class>tr.com.stigma.db.entity.User</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<!-- Auto detect annotation model classes -->
<property name="hibernate.archive.autodetection" value="class" />
<!-- Datasource -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.username" value="mobilhm" />
<property name="hibernate.connection.password" value="mobilhm" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/mobilhm" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
我的 import.sql 中的某些字符在 DB 中未正确显示。例如字符 ü 在 db 中变为 ü。 mysql 中的默认字符集是 utf-8,我正在创建类似
的表CREATE TABLE doctor (doctorId int unsigned NOT NULL AUTO_INCREMENT, name varchar(45) NOT NULL, surname varchar(45) NOT NULL, PRIMARY KEY (doctorId)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
奇怪的是,如果我使用 Mysql 导入/导出管理器数据是正确的,但使用 hibernate.hbm2ddl.auto=create 会导致字符损坏。
我该如何解决这个问题?
编辑: 我也试过添加
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding"
value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8" />
到persistence.xml。但这没有帮助。
修复: 我最终解决了它。我正在使用 Tomcat,这不是休眠或 mysql 的损坏点。我已经使用 set JAVA_OPTS=-Dfile.encoding=UTF-8 命令启动它,我的问题就消失了。
问题的标题现在变得具有误导性。很抱歉。
【问题讨论】:
标签: hibernate utf-8 character-encoding