`

No Dialect mapping for JDBC type: -1;

阅读更多

系统报错:

No Dialect mapping for JDBC type: -1; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: -1

 

好几次碰到这个问题,每次都匆匆忙忙的解决了,这个写个东西记录下来,以后直接用。

 

一看见Dialect就知道这个Hibernate的方言出问题了,这个-1不在它原有的范围之内,需要手动加上去。

 

1、新建一个Class文件,里面添加上报错的类型,如:

package com.wjl.sqldialect;

import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.SQLServerDialect;

public class SqlServer2008Dialect extends SQLServerDialect {
	public SqlServer2008Dialect() {
		super();
		//JDBC type:1
		registerHibernateType(Types.CHAR, Hibernate.STRING.getName());
		
		//JDBC type:-9
		registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());
		
		//JDBC type:-16
		registerHibernateType(Types.LONGNVARCHAR, Hibernate.STRING.getName());
		
		//JDBC type:3
		registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName());
		
		//JDBC type:-1
		registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());  
	}
}

 

 2、将配置文件中的Dialect配置上面写的那个,即:

<property name="hibernateProperties">
	<props>
		<prop key="hibernate.dialect">
				org.hibernate.dialect.SQLServerDialect
		</prop>
		<prop key="hibernate.show_sql">true</prop>
	</props>
</property>

//替换成
<property name="hibernateProperties">
	<props>
		<prop key="hibernate.dialect">
				com.wjl.sqldialect.SqlServer2008Dialect
		</prop>
		<prop key="hibernate.show_sql">true</prop>
	</props>
</property>

 至于上面那些数据,-1,-9,-16,3什么的,它们都是java.sql.Types维护的一些常量,主要有以下这些(摘自JDK1.6帮助文档):

public static final int ARRAY 2003
public static final int BIGINT -5
public static final int BINARY -2
public static final int BIT -7
public static final int BLOB 2004
public static final int BOOLEAN 16
public static final int CHAR 1
public static final int CLOB 2005
public static final int DATALINK 70
public static final int DATE 91
public static final int DECIMAL 3
public static final int DISTINCT 2001
public static final int DOUBLE 8
public static final int FLOAT 6
public static final int INTEGER 4
public static final int JAVA_OBJECT 2000
public static final int LONGNVARCHAR -16
public static final int LONGVARBINARY -4
public static final int LONGVARCHAR -1
public static final int NCHAR -15
public static final int NCLOB 2011
public static final int NULL 0
public static final int NUMERIC 2
public static final int NVARCHAR -9
public static final int OTHER 1111
public static final int REAL 7
public static final int REF 2006
public static final int ROWID -8
public static final int SMALLINT 5
public static final int SQLXML 2009
public static final int STRUCT 2002
public static final int TIME 92
public static final int TIMESTAMP 93
public static final int TINYINT -6
public static final int VARBINARY -3
public static final int VARCHAR 12
所以每次报错说是哪个数字时,直接到JDK帮助文档上找到这些常量,找到对应的直接添加到SqlServer2008Dialect类中就成。
譬如报错-1,对应于Types中的LONGVARCHAR,就在SqlServer2008Dialect添加一句:
registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());

要是报错的数字没有包含在Types中(可能性不大),就直接写上数字,告诉Hibernate用String来处理这种类型,也就是:

registerHibernateType(@报错数字, Hibernate.STRING.getName());

分享到:
评论

相关推荐

    gbase-jdbc驱动gbase-connector-8.3.81.51和infomix驱动ifxjdbc.jar

    1. **GBase JDBC驱动 (gbase-connector)**: GBase是南大通用数据系统有限公司开发的一款高性能、高可用性的列式数据库管理系统。`gbase-connector` 是一个Java实现的JDBC驱动程序,它使得Java应用程序能够通过标准...

    DmDialect-for-hibernate1-5.zip

    达梦数据DmDialect-for-hibernate所有jar包,DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-...

    DmDialect-for-hibernate4.0.zip

    本篇将详细介绍标题为"DmDialect-for-hibernate4.0.zip"的压缩包文件及其包含的两个重要组件:Dm7JdbcDriver17.jar和DmDialect-for-hibernate4.0.jar,以及它们在SpringBoot项目中的作用。 首先,SpringBoot是一个...

    DM达梦数据库jdbc-jar包dialect方言jar包

    "DM达梦数据库jdbc-jar包dialect方言jar包"就是包含了针对达梦数据库的方言实现,它使得这些框架可以正确处理DM达梦数据库特有的SQL语法和存储过程,从而提高代码的可移植性和兼容性。 在使用DM达梦数据库jdbc-jar...

    达梦数据库7最新版驱动Dm7JdbcDriver18及hibernate5.0方言包

    这个压缩包包含两个关键文件:`Dm7JdbcDriver18-7.6.0.142.jar`和`DmDialect-for-hibernate5.0-1.8.0_65-b17.jar`,分别用于JDBC连接和Hibernate ORM的支持。 首先,我们来详细了解`Dm7JdbcDriver18-7.6.0.142.jar`...

    eclipse hibernate 反向生成带注解的实体类-步骤说明--详细

    - 在hibernate.cfg.xml文件中通过 `&lt;mapping&gt;` 标签指定实体类映射文件的位置。 5. **保存并测试**: - 保存文件,并运行应用程序以验证配置是否正确。 通过以上步骤,我们可以成功地在Eclipse中使用Hibernate ...

    数据库方言大全.txt

    - **Oracle9i/10g**:`org.hibernate.dialect.Oracle9Dialect`专为Oracle9i和10g版本设计,提供了针对这些版本特性的优化。 #### DB2 **DB2** 是IBM开发的一种高性能数据库系统,支持多种平台: - **通用DB2**:...

    repid-framework 使用说明.docx

    1. **搭建项目**: - 创建 `web project` 项目,确保 `Web root folder` 设置为 `web`,注意大小写,否则会导致 404 错误。 - 将解压后的 `rapidframework.zip` 文件内容全部拷贝到项目根目录。 2. **设置项目...

    java ee应用技术知识要点.doc

    - Hibernate配置数据库连接的关键属性包括方言(dialect)、JdbcUrl、驱动(driver class)、用户名(username)和密码(password)。 10. **Hibernate配置文件**: - 默认的XML配置文件名为`hibernate.cfg.xml`...

    hibernate 入门练习.doc

    - 下载 Eclipse IDE for Java Developers。 - 安装 Eclipse 3.4,并配置 JDK 环境。 - 安装 Hibernate 插件等开发工具支持。 4. **下载 Hibernate 3.3.1.GA**: - 从官方网站 http://www.hibernate.org 下载 ...

    Hibernate配置文件

    &lt;property name="hibernate.dialect"&gt;... &lt;property name="connection.driver_class"&gt;... &lt;property name="hibernate.connection.url"&gt;... &lt;property name="hibernate.connection.username"&gt;... ...

    Hibernate 入门

    - 设置方言(Dialect),以便正确生成SQL语句。 - **基本数据查询**: - 使用`Session`的`createQuery`方法执行查询操作。 - 支持HQL(Hibernate Query Language)和原生SQL。 - **Query接口**: - 提供了更高级...

    数据库JDBC连接.txt

    ### 数据库JDBC连接知识点详解 #### 一、概述 JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它由一组用Java语言...

    kingbaseV8 hibernate jdbc 驱动

    另外,还有一些以`dialect`结尾的jar文件,如`hibernate-5.0.12.Finaldialect.jar`,这些通常是针对特定数据库的方言(Dialect)实现,用于告诉Hibernate如何正确地与特定类型的数据库进行交互。KingbaseV8的方言...

    OpenKM6.2安装与配置(默认安装与SQLSER安装)[归类].pdf

    &lt;Resource name="jdbc/OpenKMDS" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="your_username" password="your_password" driverClassName=...

    hibernate 学习笔记1

    - **ORM映射**: Hibernate通过对象关系映射(Object-Relational Mapping, ORM)技术将Java对象映射到关系型数据库的表上。 - **持久化对象的状态**: 持久化对象通常有三种状态:瞬态、持久化和脱管。 - **HQL**: ...

    SSH框架和Oracle的简单应用

    PL/SQL(Procedural Language for SQL)是一种过程化SQL语言,可以嵌入到SQL语句中,用于控制流程和处理复杂的数据处理任务。 - **PL/SQL概述**: - 支持过程化的SQL编程。 - 可以编写存储过程、函数和包。 - ...

    生成基于Oracle的jBPM数据库脚本

    - `hibernate.dialect`:改为`org.hibernate.dialect.Oracle9Dialect`以适应Oracle数据库。 - `hibernate.connection.driver_class`:更改为`oracle.jdbc.driver.OracleDriver`,这是Oracle JDBC驱动的类名。 - `...

Global site tag (gtag.js) - Google Analytics