MySql中因为数据类型的问题就会出现严重: No Dialect mapping for JDBC type -4 ...等异常.这是由于mysql(BLOB,text)类型在JDBC返回的数据类型没有注册.
解决的方法如下:
1. 重写mysql的方言
public class CrtMySQLDialect extends MySQLDialect {
public CrtMySQLDialect() {
super();
registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName()); //对应mysql的text
registerHibernateType(-4, Hibernate.BLOB.getName());
//-4就是错误的type number 在mysql对应XXXBlob忘记了名字^^
}
}
2.在hibernate设置SQL方言的XML文件中将类替换成此上面MySQLDialect 的路径