日期:2014-05-16  浏览次数:20720 次

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

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

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

上菜:

view sourceprint?1 public class MYSQLDialect extends MySQL5InnoDBDialect { 

2 public MYSQLDialect() { 

3 super(); 

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

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

6 registerFunction("group_concat", new StandardSQLFunction("group_concat", Hibernate.STRING)); 

7 } 

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

view sourceprint?1 <prop key="hibernate.dialect">org.richin.support.orm.hibernate.MYSQLDialect</prop>
然后我们直接可以通过java的String类型来映射TEXT字段就OK了