2009-07-23 9 views
5

ceci est mon hibernate.hbm.xml et j'utiliser MySQLproblème avec UTF-8 Créer un schéma par Hibernate

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 

     <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dbName?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.connection.password">******</property> 

     <property name="hbm2ddl.auto">update</property> 
     <property name="hibernate.connection.useUnicode">true</property> 
     <property name="hibernate.connection.characterEncoding">UTF-8</property> 


     <property name="show_sql">true</property> 
     <property name="format_sql">true</property> 
     <property name="hibernate.use_sql_comments">true</property> 
     <property name="current_session_context_class">thread</property> 

     <!-- configuration pool via c3p0--> 
     <property name="c3p0.acquire_increment">1</property> 
     <property name="c3p0.idle_test_period">100</property> <!-- seconds --> 
     <property name="c3p0.max_size">100</property> 
     <property name="c3p0.max_statements">0</property> 
     <property name="c3p0.min_size">10</property> 
     <property name="c3p0.timeout">100</property> <!-- seconds --> 
     <!-- DEPRECATED very expensive property name="c3p0.validate>--> 


    </session-factory> 
</hibernate-configuration> 

quand je lance mon programme pour la première fois, il crée le tableau dans la base de données, mais mon problème est le jeu de caractères est toujours latin1_swedish_ci (latin) et ne doit pas être utf8 que dois-je changer dans les paramètres hibernate.hbm.xml?

+0

Quelle charset voulez-vous dire? MySQL en connaît au moins quatre: le jeu de caractères du serveur, le jeu de caractères Db, le jeu de caractères Client et le jeu de caractères Conn. –

+0

serveur charset et db charset – Am1rr3zA

Répondre

0

Le paramètre UTF-8 concerne la façon dont Hibernate configure ses connexions d'exécution à la base de données. Je suppose que cela n'a aucun effet sur la création de schéma, qui est vraiment une partie distincte d'Hibernate.

Je trouve que le contenu du DDL automatique n'est vraiment utile que pour générer un stab initial sur le schéma. Je prends toujours ce DDL et le modifie pour être exactement ce que je veux.

+0

pouvez-vous expliquer plus sur auto-DDL et et comment dois-je l'utiliser? – Am1rr3zA

+0

et pourquoi hiberner ne comprend pas que je veux créer un schéma InnoDB? coz defualt était MyISAM mais quand j'utilise org.hibernate.dialect.MySQL5InnoDBDialect c'est changer à InnoDB !!! – Am1rr3zA

+0

Je fais référence au paramètre hbm2ddl.auto que vous utilisez dans votre configuration. – skaffman

3

Je résolu ce problème en réglant l'option character-set-server dans my.cnf:

[mysqld] 
character-set-server=utf8 
Questions connexes