Estoy usando import.sql para escribir mis datos de desarrollo en DB. Estoy usando MySQL Server 5.5 y mi persistence.xml está aquí:Hibernate/JPA caracteres import.sql utf8 dañados
<?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>
Algunos caracteres en mi import.sql no se muestra correctamente en el PP. Por ejemplo, el carácter ü se convierte en ü en db. Conjunto de caracteres predeterminado en MySQL es UTF-8 y yo soy la creación de tablas como
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;
Es raro que si importar el uso de datos de MySQL gerente de importación/exportación es correcta, pero utilizando hibernate.hbm2ddl.auto = crear personajes corruptos hace .
¿Cómo puedo solucionar esto?
Editar: También he intentado añadir
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding"
value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8" />
a persistence.xml. Pero no ayudó.
Fix: Lo he resuelto con el tiempo. Estoy usando Tomcat y ese es el punto de la corrupción no hibernate o mysql. Lo comencé con el comando JAVA_OPTS = -Dfile.encoding = UTF-8 y mi problema desaparece.
El título de la pregunta se volvió engañoso ahora. Lo siento por eso.
+1 por el motivo correcto, sin embargo, la suposición no es correcta, porque entonces sus pruebas dependerían de la plataforma. La solución más simple es establecer la codificación del archivo de texto para 'UTF-8' en su IDE o' -Dfile.encoding = UTF8 'si usa maven como @Jaroslav Frolikov ya indicado. –
Todavía no funciona en 2017 – gstackoverflow