转自:https://blog.csdn.net/xd195666916/article/details/5419316
今天做了个用hibernate直接执行原生sql的查询,报错No Dialect mapping for JDBC type :-9
报错原因:hibernate没有配置与数据库同类型的方言
解决方案:
新建一个方言类,本人用的是SQL Server2008数据库,如果用的是其他数据库,请根据数据库继承不同的方言类
ps:MySql(版本为5.x.x),需继承“org.hibernate.dialect.MySQL5Dialect”;
DB2,需继承“org.hibernate.dialect.DB2Dialect”;
SQL Server2008,需继承SQLServerDialect;
package com.jz.fw_easyui.ss.common;
import org.hibernate.dialect.SQLServerDialect;
public class SqlServer2008Dialect extends SQLServerDialect {
public SqlServer2008Dialect() {
registerHibernateType(1, "string");
registerHibernateType(-1, "string");
registerHibernateType(-9, "string");
registerHibernateType(-16, "string");
registerHibernateType(3, "double");
}
}
建好方言类后,将类路径配置在spring.xml文件中
<property name="hibernateProperties">
<props>
<!-- <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> -->
<prop key="hibernate.dialect">com.jz.fw_easyui.ss.common.SqlServer2008Dialect</prop>
<prop key="hibernate.show_sql"> true </prop>
<prop key="hibernate.format_sql"> false </prop>
</props>
</property>
至此OK