日期:2014-05-16  浏览次数:20443 次

JNDI 报错No Dialect mapping for JDBC type :-9

前段时间碰到了这类错误,最后的问号表示不确定的数字,但是解决的方法都一样。

?

首先,自定义一个方言类——Hibernate Dialect,该类需要继承与我们使用的数据库相应的方言类。比如:如果我们用的是MySql(版本为5.x.x),我们需要继承“org.hibernate.dialect.MySQL5Dialect”;如果我们使用的是DB2,那么我们应该继承“org.hibernate.dialect.DB2Dialect”;我用的是SqlServer2008,所以我要继承“org.hibernate.dialect.SQLServerDialect”,参考代码如下:

Java代码 复制代码
  1. import?java.sql.Types; ??
  2. ??
  3. import?org.hibernate.Hibernate; ??
  4. import?org.hibernate.dialect.SQLServerDialect; ??
  5. ??
  6. public?class?SqlServer2008Dialect?extends?SQLServerDialect?{ ??
  7. ??
  8. ????public?SqlServer2008Dialect()?{ ??
  9. ????????super(); ??
  10. ????????registerHibernateType(Types.CHAR,?Hibernate.STRING.getName()); ??
  11. ????????registerHibernateType(Types.NVARCHAR,?Hibernate.STRING.getName()); ??
  12. ????????registerHibernateType(Types.LONGNVARCHAR,?Hibernate.STRING.getName()); ??
  13. ????????registerHibernateType(Types.DECIMAL,?Hibernate.DOUBLE.getName()); ??
  14. ????} ??
  15. }??
Java代码 复制代码
  1. import?java.sql.Types; ??
  2. ??
  3. import?org.hibernate.Hibernate; ??
  4. import?org.hibernate.dialect.SQLServerDialect; ??
  5. ??
  6. public?class?SqlServer2008Dialect?extends?SQLServerDialect?{ ??
  7. ??
  8. ????public?SqlServer2008Dialect()?{ ??
  9. ????????super(); ??
  10. ????????registerHibernateType(Types.CHAR,?Hibernate.STRING.getName()); ??
  11. ????????registerHibernateType(Types.NVARCHAR,?Hibernate.STRING.getName()); ??
  12. ?????