报错:org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
原因:Hibernate框架的方言(Dialect )没有数据库中数据类型nvarchar的映射,只有varchar类型的映射。所以在启动时出现此异常。
解决:
- 创建自定义方言类
package com.mf.util;
import org.hibernate.dialect.SQLServer2008Dialect;
public class SqlServer2008Dialect extends SQLServer2008Dialect{
public SqlServer2008Dialect() {
super();
//registerHibernateType(Types.NVARCHAR, "string");
registerHibernateType(-9, "string");
/*
* 1.
registerHibernateType(Types.CHAR, Hibernate.STRING.getName());
registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());
registerHibernateType(Types.LONGNVARCHAR, Hibernate.STRING.getName());
registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName());
2.由于1中的Hibernate.STRING已废弃,所以用2
registerHibernateType(1, "string");
registerHibernateType(-9, "string");
registerHibernateType(-16, "string");
registerHibernateType(3, "double"); */
}
}
2、 配置文件进行指定
spring:
jpa:
show-sql: true
hibernate:
ddl-auto: none
properties:
hibernate:
dialect: com.mf.util.SqlServer2008Dialect #指定方言类