No Dialect mapping for JDBC type 错误分析
2016-03-15 18:41
459 查看
原文:http://www.tuicool.com/articles/bUfm2m
出现这个问题可能的原因:
1、数据库字段类型和JAVA类型不匹配。
2、Hibernate中错误地配置了数据库方言。
原因1解决方法:
查看java.sql.Types找到对应的类型。
根据此表格可查出是数据库中哪一种类型不匹配。
解决方法①:
修改数据库字段类型。
解决方法②:
修改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
as XXX应加上,否则可能会出错(说多了都是泪啊!)。
原因2解决方法:
正确地配置数据库方言吧。
出现这个问题可能的原因:
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解决方法:
正确地配置数据库方言吧。
相关文章推荐
- butterknife简化android开发
- Android阻止AlertDialog关闭
- 加速 Gradle 构建大型 Android 项目的方法[转]
- (4.5.3.1)AndroidStudio用gradle编译中文乱码
- Activity之间使用intent传递大量数据带来问题总结
- [Unity插件]DOTween(3)
- Android实际音乐播放的代码
- FloatingActionButton的基础使用
- iOS优化
- 【ios】相册、定位等权限判断
- 如何通过Html网页调用本地安卓app?
- Swift - 操作SQLite数据库(引用SQLite3库)
- 自制大体模仿ios 四位密码输入界面
- Android WebView使用详解
- 关于EditText
- iOS-html调起APP并传参
- iOS仿战旗 TV app
- Android实战技巧之五十:App的系统签名
- Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)
- Android中的数据库相关以及封装