2009-07-23 13 views
5

questo è il mio hibernate.hbm.xml e lo uso MySQLproblema con UTF-8 in Crea schema da 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> 

quando eseguo il mio programma per la prima volta si crea tabella nel database, ma il mio problema è il set di caratteri è ancora latin1_swedish_ci (latin) e non essere utf8 cosa dovrei cambiare nelle impostazioni hibernate.hbm.xml?

+0

Quale charset vuoi dire? MySQL ne conosce almeno quattro: set di caratteri Server, set di caratteri Db, set di caratteri Client e set di caratteri Conn. –

+0

set di caratteri del server e set di caratteri db – Am1rr3zA

risposta

0

L'impostazione UTF-8 si riferisce al modo in cui Hibernate configura le sue connessioni di runtime al database. Immagino che non abbia alcun effetto sulla creazione di schemi, che è in realtà una parte separata di Hibernate del tutto.

Trovo che l'auto-DDL sia davvero utile solo per generare una pugnalata iniziale allo schema. Prendo sempre quel DDL e lo modifico per essere esattamente quello che voglio.

+0

puoi spiegare di più sull'auto-DDL e come dovrei usarlo? – Am1rr3zA

+0

e perché ibernare unserstand tht Voglio creare lo schema InnoDB? coz defualt era MyISAM ma quando uso org.hibernate.dialect.MySQL5InnoDBDialect è cambiato in InnoDB !!! – Am1rr3zA

+0

Mi riferisco all'impostazione hbm2ddl.auto che stai utilizzando nella tua configurazione. – skaffman

3

ho risolto questo problema impostando character-set-server opzione my.cnf:

[mysqld] 
character-set-server=utf8 
Problemi correlati