扩展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了