工做中遇到原生的hibernate方言沒法將數據庫中的某些數據類型映射到java類中,須要作兩個操做:java
一、建立類繼承自原方言類,並修改所要更改的數據類型,代碼以下:
sql
package com.lkscn.base.dialect; import java.sql.Types; import org.hibernate.Hibernate; import org.hibernate.dialect.MySQL5Dialect; public class MyDialectForInkfish extends MySQL5Dialect { public MyDialectForInkfish(){ super(); //數據庫中的longchar類型映射爲text類型 registerHibernateType(Types.LONGVARCHAR, 65535, "text"); registerHibernateType(Types.LONGVARCHAR, 65535, "longtext"); registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName()); registerHibernateType(-1, Hibernate.STRING.getName()); } }
二、修改配置文件數據庫
<!-- MySql 數據源配置 --> <property name="hibernateProperties"> <value> hibernate.cache.use_query_cache=true hibernate.cache.use_second_level_cache=true hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider <!-- hibernate.dialect=org.hibernate.dialect.MySQLDialect --> hibernate.dialect=com.lkscn.base.dialect.MyDialectForInkfish hibernate.hbm2ddl.auto=update <!--hibernate.show_sql=show --> hibernate.format_sql=true hibernate.jdbc.fetch_size=5 hibernate.jdbc.batch_size=30 </value> </property>