前段时间碰到了这类错误,最后的问号表示不确定的数字,但是解决的方法都一样。
?
首先,自定义一个方言类——Hibernate Dialect,该类需要继承与我们使用的数据库相应的方言类。比如:如果我们用的是MySql(版本为5.x.x),我们需要继承“org.hibernate.dialect.MySQL5Dialect”;如果我们使用的是DB2,那么我们应该继承“org.hibernate.dialect.DB2Dialect”;我用的是SqlServer2008,所以我要继承“org.hibernate.dialect.SQLServerDialect”,参考代码如下:
- import?java.sql.Types; ??
- ??
- import?org.hibernate.Hibernate; ??
- import?org.hibernate.dialect.SQLServerDialect; ??
- ??
- public?class?SqlServer2008Dialect?extends?SQLServerDialect?{ ??
- ??
- ????public?SqlServer2008Dialect()?{ ??
- ????????super(); ??
- ????????registerHibernateType(Types.CHAR,?Hibernate.STRING.getName()); ??
- ????????registerHibernateType(Types.NVARCHAR,?Hibernate.STRING.getName()); ??
- ????????registerHibernateType(Types.LONGNVARCHAR,?Hibernate.STRING.getName()); ??
- ????????registerHibernateType(Types.DECIMAL,?Hibernate.DOUBLE.getName()); ??
- ????} ??
- }??
- import?java.sql.Types; ??
- ??
- import?org.hibernate.Hibernate; ??
- import?org.hibernate.dialect.SQLServerDialect; ??
- ??
- public?class?SqlServer2008Dialect?extends?SQLServerDialect?{ ??
- ??
- ????public?SqlServer2008Dialect()?{ ??
- ????????super(); ??
- ????????registerHibernateType(Types.CHAR,?Hibernate.STRING.getName()); ??
- ????????registerHibernateType(Types.NVARCHAR,?Hibernate.STRING.getName()); ??
- ?????