Java-解决实现JPA的hibernate自动建表的编码问题
2017-03-21 本文已影响59人
JackFrost_fuzhu
继续这一个系列,这次讲JPA编码问题的解决。
本系列:
(一)J2EE项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven快速开发(1)项目架构
(二) J2EE项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven快速开发(2)多个第三方服务端接入之云旺IM
hibernate自动建表的编码应该是数据默认的编码格式latin1_swedish_ci,所以我们直接自动建表,即使你给persistenceUnitName的持久单元设定了utf8,还是使用latin1编码的。
因为什么呢??因为你使用的hibernate方言问题,对应mysql的翻译的方言。
所以我们怎么做??
(1)继承MySQL5InnoDBDialect覆写方法:
像安卓的自定义控件一样,为了多样化的控件,我们需要自己去开发新控件,就是去使用继承的原理,覆写父类方法。
public class MySQL5DialectUTF8 extends MySQL5InnoDBDialect {
@Override
public String getTableTypeString() {
return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
}
}
(2)在持久化单元引用这个被覆写的方言:
<!-- 使用MySQL方言 -->
<property name="hibernate.dialect" value="com.ima.utils.MySQL5DialectUTF8"/>