系统报错:
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 |
相关推荐
1. **GBase JDBC驱动 (gbase-connector)**: GBase是南大通用数据系统有限公司开发的一款高性能、高可用性的列式数据库管理系统。`gbase-connector` 是一个Java实现的JDBC驱动程序,它使得Java应用程序能够通过标准...
本篇将详细介绍标题为"DmDialect-for-hibernate4.0.zip"的压缩包文件及其包含的两个重要组件:Dm7JdbcDriver17.jar和DmDialect-for-hibernate4.0.jar,以及它们在SpringBoot项目中的作用。 首先,SpringBoot是一个...
达梦数据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-...
"DM达梦数据库jdbc-jar包dialect方言jar包"就是包含了针对达梦数据库的方言实现,它使得这些框架可以正确处理DM达梦数据库特有的SQL语法和存储过程,从而提高代码的可移植性和兼容性。 在使用DM达梦数据库jdbc-jar...
- 在hibernate.cfg.xml文件中通过 `<mapping>` 标签指定实体类映射文件的位置。 5. **保存并测试**: - 保存文件,并运行应用程序以验证配置是否正确。 通过以上步骤,我们可以成功地在Eclipse中使用Hibernate ...
- **Oracle9i/10g**:`org.hibernate.dialect.Oracle9Dialect`专为Oracle9i和10g版本设计,提供了针对这些版本特性的优化。 #### DB2 **DB2** 是IBM开发的一种高性能数据库系统,支持多种平台: - **通用DB2**:...
1. **搭建项目**: - 创建 `web project` 项目,确保 `Web root folder` 设置为 `web`,注意大小写,否则会导致 404 错误。 - 将解压后的 `rapidframework.zip` 文件内容全部拷贝到项目根目录。 2. **设置项目...
这个压缩包包含两个关键文件:`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`...
- Hibernate配置数据库连接的关键属性包括方言(dialect)、JdbcUrl、驱动(driver class)、用户名(username)和密码(password)。 10. **Hibernate配置文件**: - 默认的XML配置文件名为`hibernate.cfg.xml`...
- 下载 Eclipse IDE for Java Developers。 - 安装 Eclipse 3.4,并配置 JDK 环境。 - 安装 Hibernate 插件等开发工具支持。 4. **下载 Hibernate 3.3.1.GA**: - 从官方网站 http://www.hibernate.org 下载 ...
<property name="hibernate.dialect">... <property name="connection.driver_class">... <property name="hibernate.connection.url">... <property name="hibernate.connection.username">... ...
另外,还有一些以`dialect`结尾的jar文件,如`hibernate-5.0.12.Finaldialect.jar`,这些通常是针对特定数据库的方言(Dialect)实现,用于告诉Hibernate如何正确地与特定类型的数据库进行交互。KingbaseV8的方言...
- 设置方言(Dialect),以便正确生成SQL语句。 - **基本数据查询**: - 使用`Session`的`createQuery`方法执行查询操作。 - 支持HQL(Hibernate Query Language)和原生SQL。 - **Query接口**: - 提供了更高级...
### 数据库JDBC连接知识点详解 #### 一、概述 JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它由一组用Java语言...
<Resource name="jdbc/OpenKMDS" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="your_username" password="your_password" driverClassName=...
- **ORM映射**: Hibernate通过对象关系映射(Object-Relational Mapping, ORM)技术将Java对象映射到关系型数据库的表上。 - **持久化对象的状态**: 持久化对象通常有三种状态:瞬态、持久化和脱管。 - **HQL**: ...
PL/SQL(Procedural Language for SQL)是一种过程化SQL语言,可以嵌入到SQL语句中,用于控制流程和处理复杂的数据处理任务。 - **PL/SQL概述**: - 支持过程化的SQL编程。 - 可以编写存储过程、函数和包。 - ...
- `hibernate.dialect`:改为`org.hibernate.dialect.Oracle9Dialect`以适应Oracle数据库。 - `hibernate.connection.driver_class`:更改为`oracle.jdbc.driver.OracleDriver`,这是Oracle JDBC驱动的类名。 - `...