2009-07-23 22 views
5

đây là hibernate.hbm.xml My và tôi sử dụng MySQLVấn đề với UTF-8 trong Tạo Schema By 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> 

khi tôi chạy chương trình của tôi cho lần đầu tiên nó tạo ra bảng trong cơ sở dữ liệu nhưng vấn đề của tôi là Charset vẫn là latin1_swedish_ci (latin) và không được utf8 những gì tôi nên thay đổi trong cài đặt hibernate.hbm.xml?

+0

nào charset làm bạn nghĩa là gì? MySQL biết ít nhất bốn trong số chúng: ký tự Server, ký tự Db, ký tự Client và ký tự Conn. –

+0

charset và db charset của máy chủ – Am1rr3zA

Trả lời

0

Cài đặt UTF-8 liên quan đến cách Hibernate định cấu hình kết nối thời gian chạy của nó với cơ sở dữ liệu. Tôi đoán nó không có tác dụng trên các công cụ tạo lược đồ, mà thực sự là một phần riêng biệt của Hibernate hoàn toàn.

Tôi thấy rằng các công cụ tự động DDL chỉ thực sự hữu ích để tạo ra cú đâm đầu tiên tại lược đồ. Tôi luôn lấy DDL đó và sửa đổi nó thành chính xác những gì tôi muốn.

+0

bạn có thể giải thích thêm về auto-DDL không và tôi nên sử dụng nó như thế nào? – Am1rr3zA

+0

và tại sao hibernate unserstand tht tôi muốn tạo lược đồ InnoDB? coz defualt là MyISAM nhưng khi tôi sử dụng org.hibernate.dialect.MySQL5InnoDBDialect nó thay đổi nó thành InnoDB !!! – Am1rr3zA

+0

Tôi đang tham khảo cài đặt hbm2ddl.auto bạn đang sử dụng trong cấu hình của mình. – skaffman

3

tôi giải quyết vấn đề này bằng cách thiết lập tùy chọn trong character-set-servermy.cnf:

[mysqld] 
character-set-server=utf8 
Các vấn đề liên quan