改Hibernate自動建表編碼默認latin到UTF-8

hibernate+mysql問題

開發中在使用hibernate自動建表時

<property name="hibernate.hbm2ddl.auto">create</property>

發現u8編碼過的數據寫不到表裏,去看數據庫,發現字段編碼都是latin,經網查發現是下面這個類生成的建表語句沒有設置編碼格式:

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
@Override
/**
*   org.hibernate.dialect.MySQLDialect類中返回的建表語言後綴
*/
    public String getTableTypeString() {
    //經打印此方法return值爲 "type=MyISAM"
        return storageEngine.getTableTypeString( getEngineKeyword());
    }

解決:
第一步,繼承org.hibernate.dialect.MySQLDialect創建新類,重寫getTableTypeString(),直接return:ENGINE=InnoDB DEFAULT CHARSET=utf8

第二部,配置cfg文件中

<property name="創建的新的方言的子類"</property>

然後 建表語言將自動拼裝成:

Hibernate: 

    create table cst_customer (
       cust_id bigint not null auto_increment,
        cust_name varchar(255),
       ...
    )ENGINE=InnoDB DEFAULT CHARSET=utf8

重新建表,問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章