No Dialect mapping for JDBC type 错误分析

来源:互联网 发布:平湖校区网络教学平台 编辑:程序博客网 时间:2024/05/18 02:06

原文:http://www.tuicool.com/articles/bUfm2m

出现这个问题可能的原因:

1、数据库字段类型和JAVA类型不匹配。

2、Hibernate中错误地配置了数据库方言。

原因1解决方法:

查看java.sql.Types找到对应的类型。

1ARRAY20032BIGINT-53BINARY-24BIT-75BLOB20046BOOLEAN167CHAR18CLOB20059DATALINK7010DATE9111DECIMAL312DISTINCT200113DOUBLE814FLOAT615INTEGER416JAVA_OBJECT200017LONGNVARCHAR-1618LONGVARBINARY-419LONGVARCHAR-120NCHAR-1521NCLOB201122NULL023NUMERIC224NVARCHAR-925OTHER111126REAL727REF200628ROWID-829SMALLINT530SQLXML200931STRUCT200232TIME9233TIMESTAMP9334TINYINT-635VARBINARY-336VARCHAR







































根据此表格可查出是数据库中哪一种类型不匹配。

解决方法①:

修改数据库字段类型。

解决方法②:

修改Hibernate配置的数据库方言。

package com.aecc.util;


import org.hibernate.dialect.SQLServerDialect;


/**
 * 修改Hibernate配置的数据库方言,避免出现数据库字段类型和JAVA类型不匹配
 * @author zuoqiang
 * @version 2016-3-15
 */
public class SqlServer2005Dialect extends SQLServerDialect {
public SqlServer2005Dialect(){
super();
registerHibernateType(-9, "string"); 
}
}

hibernate.dialect = com.aecc.util.SqlServer2005Dialect

解决方法③:

使用convert,例如字段deptName的类型为nvarchar,出现错误为No Dialect mapping for JDBC type:-9

可将nvarchar转成varchar

select convert(varchar(255),deptName) as deptName from JITDept
as XXX应加上,否则可能会出错(说多了都是泪啊!)。

原因2解决方法:

正确地配置数据库方言吧。


0 0
原创粉丝点击