扩展hibernate3让其支持MySQL的text类型

我们数据库设计一般是使用varchar(2024),一旦定好长度,这个字段默认就占用了这么多空间,为了节约数据库空间,我决定使用TEXT类型来保持数据,悲剧发生了,Hibernate不支持映射TEXT类型?

去网上翻了翻,好多人遇到这个问题,so决定记录下

我们只要继承hibernate的MySQL5InnoDBDialect类,我这MYSql用的是InnoDB,所以直接继承他了

上菜:

viewsourceprint?1publicclassMYSQLDialectextendsMySQL5InnoDBDialect{

2publicMYSQLDialect(){

3super();

4registerHibernateType(Types.DECIMAL,Hibernate.BIG_DECIMAL.getName());

5registerHibernateType(Types.LONGVARCHAR,Hibernate.TEXT.getName());

6registerFunction("group_concat",newStandardSQLFunction("group_concat",Hibernate.STRING));

7}

8}

然后我们修改下我们的hibernate配置文件或者是Spring的配置文件

viewsourceprint?1<propkey="hibernate.dialect">org.richin.support.orm.hibernate.MYSQLDialect</prop>

然后我们直接可以通过java的String类型来映射TEXT字段就OK了

相关推荐