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. sublime text 2中Windows下编写的脚本在Linux平台上运行遇到字符问题

    今天在windows下的sublime text 2下写了个脚本,上传到ubuntu服务器中执行后提示: -bash: /usr/bin/python: /usr/bin/python^M: bad ...

  2. 利用R语言打造量化分析平台

    利用R语言打造量化分析平台 具体利用quantmod包实现对股票的量化分析 1.#1.API读取在线行情2.#加载quantmod包3.if(!require(quantmod)){4. instal ...

  3. gridView行号的显示

    我们在进行开发的时候,很多地方希望dataGridview或girdView显示行号,这里我来说一下两种的实现方法 在girdView中很简单很好实现,我在这里写一下代码,具体其他功能可以看其带的DE ...

  4. python 自学笔记(四) 列表

    有几天没有更新博客了,毕竟是自学,最近事情确实比较多,有时候想学的时候反而没时间,到有时间的时候反而不想学.以后得想办法改掉这个缺点,只要有时间就要学习自己想学的东西,希望自学的同学能和我共同交流,其 ...

  5. 《UNIX网络编程》TCP客户端服务器例子

    最近在看<UNIX网络编程>(简称unp)和<Linux程序设计>,对于unp中第一个获取服务器时间的例子,实践起来总是有点头痛的,因为作者将声明全部包含在了unp.h里,导致 ...

  6. EL表达式(转)

    转自:http://www.cnblogs.com/Fskjb/archive/2009/07/05/1517192.html EL 全名为Expression Language EL 语法很简单,它 ...

  7. EditPlus3.3 集成 SVN

    今天在玩EditPlus的时候,由于自己想上传文件至SVN,本机已经安装了TSVN,听说近期EditPlus支持了SVN操作,于是自己便带着好奇的心试试了.     已有的环境: EditPlus 3 ...

  8. C++临时对象销毁时间

    下面这段代码会输出什么? const char* p = string("hello temprary string").c_str(); cout << p; 下面这 ...

  9. chroot_local_user和chroot_list_enable含义

    很多情况下,我们希望限制ftp用户只能在其主目录下(root dir)下活动,不允许他们跳出主目录之外浏览服务器上 的其他目录,这时候我就需要使用到chroot_local_user,chroot_l ...

  10. php获取服务器地址

    if ( isset( $_SERVER['HTTP_X_FORWARDED_HOST'] ) ) { // Support ProxyPass        $t_hosts = explode( ...