No Dialect mapping for JDBC type 错误分析

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

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

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

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

原因1解决方法:

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

1 ARRAY 2003
2 BIGINT -5
3 BINARY -2
4 BIT -7
5 BLOB 2004
6 BOOLEAN 16
7 CHAR 1
8 CLOB 2005
9 DATALINK 70
10 DATE 91
11 DECIMAL 3
12 DISTINCT 2001
13 DOUBLE 8
14 FLOAT 6
15 INTEGER 4
16 JAVA_OBJECT 2000
17 LONGNVARCHAR -16
18 LONGVARBINARY -4
19 LONGVARCHAR -1
20 NCHAR -15
21 NCLOB 2011
22 NULL 0
23 NUMERIC 2
24 NVARCHAR -9
25 OTHER 1111
26 REAL 7
27 REF 2006
28 ROWID -8
29 SMALLINT 5
30 SQLXML 2009
31 STRUCT 2002
32 TIME 92
33 TIMESTAMP 93
34 TINYINT -6
35 VARBINARY -3
36 VARCHAR







































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

解决方法①:

修改数据库字段类型。

解决方法②:

修改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解决方法:

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


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值