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
重新建表,問題解決。