Hibernate真对mysql大文本字段的方言定制

本人使用的hibernate是3.2版本,数据库是mysql5.0在使用过程中出现了一些问题。例如:当数据表中大文本字段的时候,hiberante会报出方言中不支持这个type的错误。最后找到的原因是hibernate不支持text,mediumtext,longtext等长字段的方言。

一般我们在真对Mysql方言的时候,都是写成org.hibernate.dialect.MimerSQLDialect,我们需要根据你的建立数据库的方式,例如是否是MySQL5InnoDB,MySQLMyISAM等。当时我们用的是MySQL5InnoDB,因此大家只用写一个方法来继承MySQL5InnoDBDialect即可解决这个问题。代码如下:

public class MYSQLDialect extends MySQL5InnoDBDialect {
	public MYSQLDialect() {

		super();

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

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

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

	}

}

然后在hibernate配置文件中写上hibernate.dialect=com.lingdong.util.MYSQLDialect即可解决此问题。

相关推荐