org.hibernate.MappingException: No Dialect mapping for JDBC type: -9

原因:Hibernate框架的方言(Dialect )没有数据库中数据类型nvarchar的映射,只有varchar类型的映射。所以在启动时出现此异常。

解决方法:

方法一:

将数据库字段的nvarchar类型改为varchar类型。

方法二:

为了指定更加明确的返回值类型,我们可以使用addScalar()方法:

session.createSQLQuery("select * from person_inf")  

.addScalar("name",StandardBasicTypes.STRING)  

.addScalar("age",StandardBasicTypes.INT)  

.list();

方法三:

org.hibernate.MappingException: No Dialect mapping for JDBC type: -9

org.hibernate.MappingException: No Dialect mapping for JDBC type: -15

笔者在做连接SQLServer2008数据库的时候遇到了上述的错误,解决办法如下:

package com.shihuan.core.framework.extend;

import java.sql.Types;

import org.hibernate.Hibernate;

import org.hibernate.dialect.SQLServer2008Dialect;

public class SqlServer2008Dialect extends SQLServer2008Dialect {

    public SqlServer2008Dialect() {  

        super();  

        registerHibernateType(Types.CHAR, Hibernate.STRING.getName());

        registerHibernateType(Types.NCHAR, Hibernate.STRING.getName());

        registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());  

        registerHibernateType(Types.LONGNVARCHAR, Hibernate.STRING.getName());  

        registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName());  

    }

}

java.sql.Types对应的值请参考http://blog.sina.com.cn/s/blog_4f925fc30102ep0v.html

java.sql.Types对应的sql server2008中的一些值:

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;

Hibernate SQL方言(hibernate.dialect):

RDBMS

Dialect

DB2

org.hibernate.dialect.DB2Dialect

DB2 AS/400

org.hibernate.dialect.DB2400Dialect

DB2 OS390

org.hibernate.dialect.DB2390Dialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

MySQL5

org.hibernate.dialect.MySQL5Dialect

MySQL5 with InnoDB

org.hibernate.dialect.MySQL5InnoDBDialect

MySQL with MyISAM

org.hibernate.dialect.MySQLMyISAMDialect

Oracle(any version)

org.hibernate.dialect.OracleDialect

Oracle 9i

org.hibernate.dialect.Oracle9iDialect

Oracle 10g

org.hibernate.dialect.Oracle10gDialect

Oracle 11g

org.hibernate.dialect.Oracle10gDialect

Sybase

org.hibernate.dialect.SybaseASE15Dialect

Sybase Anywhere

org.hibernate.dialect.SybaseAnywhereDialect

Microsoft SQL Server 2000

org.hibernate.dialect.SQLServerDialect

Microsoft SQL Server 2005

org.hibernate.dialect.SQLServer2005Dialect

Microsoft SQL Server 2008

org.hibernate.dialect.SQLServer2008Dialect

SAP DB

org.hibernate.dialect.SAPDBDialect

Informix

org.hibernate.dialect.InformixDialect

HypersonicSQL

org.hibernate.dialect.HSQLDialect

H2 Database

org.hibernate.dialect.H2Dialect

Ingres

org.hibernate.dialect.IngresDialect

Progress

org.hibernate.dialect.ProgressDialect

Mckoi SQL

org.hibernate.dialect.MckoiDialect

Interbase

org.hibernate.dialect.InterbaseDialect

Pointbase

org.hibernate.dialect.PointbaseDialect

FrontBase

org.hibernate.dialect.FrontbaseDialect

Firebird

org.hibernate.dialect.FirebirdDialect

1.org.hibernate.MappingException: No Dialect mapping for JDBC type: -9的更多相关文章

  1. hibernate报错:org.hibernate.MappingException: No Dialect mapping for JDBC type: -1

    解决方法:自定义一个Hibernate Dialect. package com.yourcompany.util ; import java.sql.Types; import org.hibern ...

  2. springboot org.hibernate.MappingException: No Dialect mapping for JDBC type: -9

    参考 https://www.cnblogs.com/luxd/p/8316243.html https://www.cnblogs.com/s648667069/p/6478559.html @Co ...

  3. hibernate:MySQL No Dialect mapping for JDBC type: -1

    出处:(hibernate中使用原生的sql语句,报如下错误:) MySQL No Dialect mapping for JDBC type: -1 代码: List list = session. ...

  4. 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题

    转自博客http://blog.csdn.net/xd195666916/article/details/5419316,同时感谢博主 今天做了个用hibernate直接执行原生sql的查询,报错No ...

  5. No Dialect mapping for JDBC type: -1

    MySQL数据库中有张表的字段是text,查询出来后对应的java类型是String,Dialect设置为org.hibernate.dialect.MySQLDialect 运行的时候报错:No D ...

  6. Hibernate映射数据库中longtext类型属性时报错No Dialect mapping for JDBC type: -1的解决方案

    出现错误的原因是:hibernate中对于数据库的longtext数据类型不支持. 解决方案: 1.写个类集成方言,然后自己实现对longtext的支持 import java.sql.Types; ...

  7. Hibernate 数据库方言配置;no dialect mapping for jdbc type:-9;生僻字

    最近因为生僻字在界面上显示为?: 主要原因是该字段在数据库中就是varchar类型,显示的就是?:如䶮(yan):现把varchar类型改为nvarchar类型:数据中能够正常显示: 但是Spring ...

  8. No Dialect mapping for JDBC type: -9

    由于项目中使用的是hibernate 4.35版本和sqlserver 2008数据库.所以,自定义方言时,需要和老版本做区别: public class MySQLServerDialect ext ...

  9. jpa No Dialect mapping for JDBC type:-9

    1.自定义个一个继承SQLServerDialect的dialect类 public class MySQLServer2008Dialect extends SQLServer2008Dialect ...

随机推荐

  1. Python同步数据库的数据到Neo4J

    写了主要是步骤,如果疑问,请咨询QQ:5988628 Python版本采用2.7.X,默认的2.6.X后期会有问题,建议,一开始就升级Python.然后再安装pip. 访问数据库 sqlalchemy ...

  2. img标签的方方面面

    <IMG>标签的方方面面 <img>标签是页面上最为重要的元素之一.很难想象一个页面上没有图片的样子,这样的页面效果将会大打折扣. 任何一个前端工程师想必对<img> ...

  3. js选项卡切换效果

    选项卡切换在页面中比较常见,这里是我利用js闭包还有setTimeout定时器实现的一个比较实用的选项卡功能. <!DOCTYPE html> <html lang="en ...

  4. raspberrypi VNC server

    安装apt-get install tightvncserver tightvnc-java 启动vncserver -name vnc_raspi -depth 24 -geometry 800x6 ...

  5. 了解单位em和px的区别

    这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平时都是用p ...

  6. 在一个frame设置四个组件

    import javax.swing.*; import java.awt.event.*; import java.awt.*; class TouChaCol{ JFrame frame; JLa ...

  7. aix5.1 5.2 5.3 6.1 7.1运维技术总结

    ++++++++++++++++++++++++++++ + Ruiy 20014-10 zz + +Technology Area; + Tel:150 55198367 + QQ:5160 591 ...

  8. Windows下使用XManager访问Ubuntu 11.04的设置方法

    1.Download the attached file and upload it to the server. And, enter the following command to update ...

  9. 【转】C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部

    PS:文末的附件已更新,这次我放到博客园里面了,不会弹出广告,放心下载,O(∩_∩)O谢谢! 这是最近在做的一个项目中提到的需求,把一个现有的窗体应用程序界面嵌入到自己开发的窗体中来,看起来就像自己开 ...

  10. 新手求大神,有其他swit-case的思路写这个程序么?

    两个程序: switch-case与if-else if的区别相同点:可以实现多分支结构;不同点:switch:一般只能用于等值比较.(可以进行范围运算???---学会用switch计算范围出炉的思路 ...