博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
毕设问题小记——No Dialect mapping for JDBC type:-1错误
阅读量:6148 次
发布时间:2019-06-21

本文共 2276 字,大约阅读时间需要 7 分钟。

hot3.png

  为了实现在用户误操作后能够对数据进行修正,打算添加一个数据库管理功能,主要实现对数据表的查询和执行sql语句。费了半天功夫完成以后查询有的表数据正常显示,但是个别表出现如下错误:

No Dialect mapping for JDBC type: -1

  意思显而易见:没有方言能够与JDBC类型-1映射。难道我数据库字段用了特殊类型,而hibernate不支持?百度之后找到很多同样错误,有的分析发现对于长度过大的varchar(LONGVARCHAR )映射时会报这个错误,检查数据库发现这些表中都是用了text类型,应该就是这个原因。修改方法一般有两种:一是修改字段类型,二是扩展自定义方言。采用第二种方法修改如下:

添加自定义方言类:

package com.sxpt.util;import java.sql.Types;import org.hibernate.Hibernate;import org.hibernate.dialect.MySQL5Dialect;public class KtMySQL5Dialect extends MySQL5Dialect{    public KtMySQL5Dialect(){        super();        this.registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());    }}

hibernate.xml也要修改为对应方言:

com.sxpt.util.KtMySQL5Dialect

下附java.sql.Types对应值,在出现错误时可根据值判断类型

public final static int BIT   =  -7;public final static int TINYINT  =  -6;public final static int SMALLINT =   5;public final static int INTEGER  =   4;public final static int BIGINT   =  -5;public final static int FLOAT   =   6;public final static int REAL   =   7;public final static int DOUBLE   =   8;public final static int NUMERIC  =   2;public final static int DECIMAL  =   3;public final static int CHAR  =   1;public final static int VARCHAR  =  12;public final static int LONGVARCHAR  =  -1;public final static int DATE   =  91;public final static int TIME   =  92;public final static int TIMESTAMP  =  93;public final static int BINARY  =  -2;public final static int VARBINARY  =  -3;public final static int LONGVARBINARY  =  -4;public final static int NULL  =   0;public final static int OTHER  = 1111;public final static int JAVA_OBJECT         = 2000;public final static int DISTINCT            = 2001;public final static int STRUCT              = 2002;public final static int ARRAY               = 2003;public final static int BLOB                = 2004;public final static int CLOB                = 2005;public final static int REF                 = 2006;public final static int DATALINK = 70;public final static int BOOLEAN = 16;public final static int ROWID = -8;public static final int NCHAR = -15;public static final int NVARCHAR = -9;public static final int LONGNVARCHAR = -16;public static final int NCLOB = 2011;public static final int SQLXML = 2009;

 

转载于:https://my.oschina.net/goodtemper/blog/195938

你可能感兴趣的文章
9、Dubbo-配置(4)
查看>>
前端第七天
查看>>
图解SSH原理及两种登录方法
查看>>
[转载] 七龙珠第一部——第058话 魔境圣地
查看>>
【总结整理】JQuery基础学习---样式篇
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>
JS图片跟着鼠标跑效果
查看>>
[SCOI2005][BZOJ 1084]最大子矩阵
查看>>
学习笔记之Data Visualization
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
Android实现自定义位置无标题Dialog
查看>>
416. Partition Equal Subset Sum
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
while()
查看>>