使用原生的SQL查询时,如果你用了text数据类型,Hibernate根本就不认识这种数据类型,所以会返回No Dialect mapping for JDBC type:-1,这样的话,就需要自定义方言。
另:如果mysql数据库类型是char,在使用原生SQL查询时,发现结果只取一位字符。解决方法继承MYSQL的dialect,在Hibernate中将CHAR(N)都注册为String类型
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLDialect;
public class MySQL5Dialect extends MySQLDialect {
public MySQL5Dialect() {
registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
registerHibernateType(Types.CHAR, Hibernate.STRING.getName());
}
}