- 浏览: 421884 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (318)
- js (20)
- JQuery (2)
- Java (46)
- Oracle (4)
- mysql (21)
- ExtJs (17)
- Excel (2)
- Linux (8)
- Sql (8)
- Jsp (2)
- hibernate (12)
- jbpm (17)
- eclipse (8)
- 名博收藏 (1)
- Junit (2)
- 应用集成 (3)
- web (10)
- jboss (3)
- Rest (3)
- 其它 (7)
- 磁盘分区管理 (1)
- spring (18)
- SSO (4)
- tomcat (4)
- CSS (7)
- MemCached (6)
- EhCache (4)
- weblogic (1)
- apache (6)
- Exception design (1)
- db (1)
- 分析模式 (1)
- jstl (1)
- jsf (0)
- firefox (2)
- MongoDB (4)
- androidpn (1)
- hadoop (1)
- cvs (1)
- 微信公众号 (2)
- 高并发 (4)
- 技术论坛 (1)
- CDN (1)
- JVM (16)
- 加密 (4)
- maven (2)
- jenkins (1)
- hessian (1)
- 大数据处理 (2)
- NIO (0)
- netty (1)
- redis (1)
- git (1)
- Elastic Job (0)
最新评论
-
zgw06629:
或者<pre>aaaabbbbcccc</p ...
javaDoc注释换行 -
ddnzero:
...
StringBuffer换行 -
maosijun:
。。。。
EXT CExt.form.ComboBox选择一次后只剩一个选项 -
ysa198584:
你这有问题,当我的代码出现User.class的时候,反编绎的 ...
java的class文件批量反编译 -
dongj0325:
看到您的博客,很受启发,但还有关于jbpm4.4 timer使 ...
JBPM定时器(Timer)之Repeat属性不能使用变量
mysql varchar长度过大引起hibernate原生态SQL错误:No Dialect mapping for JDBC type: -1错误的解决方法
- 博客分类:
- mysql
先把异常抛出来:
Hibernate: select sum(num) from ( select count(*) as num from cm_facility_wrong as fw left outer join cm_conf as cf on fw.faw_room_id=cf.conf_id left outer join cm_facility as f on fw.fa_id=f.fa_id where 1=1 and fw.faw_room_type=0 union all select count(*) as num from cm_facility_wrong as fw left outer join cm_classroom as cr on fw.faw_room_id=cr.cr_id left outer join cm_facility as f on fw.fa_id=f.fa_id where 1=1 and fw.faw_room_type=1 ) as t
Hibernate: select fw.faw_id,fw.faw_room_id,fw.faw_room_type, fw.fa_id,fw.faw_type,fw.faw_desc,fw.faw_time,fw.faw_man, fw.faw_r_company,fw.faw_man,fw.faw_phone,fw.faw_r_time, fw.faw_memo,fw.faw_state, cf.conf_name,f.fa_no,f.fa_name from cm_facility_wrong as fw left outer join cm_conf as cf on fw.faw_room_id=cf.conf_id left outer join cm_facility as f on fw.fa_id=f.fa_id where 1=1 and fw.faw_room_type=0 union all select fw.faw_id,fw.faw_room_id,fw.faw_room_type, fw.fa_id,fw.faw_type,fw.faw_desc,fw.faw_time,fw.faw_man, fw.faw_r_company,fw.faw_man,fw.faw_phone,fw.faw_r_time, fw.faw_memo,fw.faw_state, cr.cr_name,f.fa_no,f.fa_name from cm_facility_wrong as fw left outer join cm_classroom as cr on fw.faw_room_id=cr.cr_id left outer join cm_facility as f on fw.fa_id=f.fa_id where 1=1 and fw.faw_room_type=1 limit ?
WARN - Unhandled Exception thrown: class org.hibernate.MappingException
2009-6-24 20:40:15 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
at org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
at org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370)
at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559)
at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485)
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1796)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
at net.bolue.other.dao.impl.CmFacilityWrongDAOImpl.findAll(CmFacilityWrongDAOImpl.java:93)
at net.bolue.other.service.impl.CmFacilityWrongServiceImpl.findAll(CmFacilityWrongServiceImpl.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy33.findAll(Unknown Source)
at net.bolue.other.action.CmFacilityWrongAction.findByAll(CmFacilityWrongAction.java:212)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
由于此查询语句需要使用union语句,因此必须要用原生态的SQL来写.在表中有两个字段类型为varchar,长度我都设为1000.
结果做这个查询时就出了问题,SQL语句hibernate已经运行出来了,说明SQL语句写的没有问题,后来google了半天,在中文google里找了找,也有写报类似错误的,但是都没有出现我这个type: -1错误,于是就google英文页面,找到了一篇介绍这个解决办法的文章:http://opensource.atlassian.com/projects/hibernate/browse/HHH-1483,还是英文google资料多而且准啊.
出现这个原因是说hibernate中mysql的varchar类型与数据库中的varchar类型不能对应起来,因此只要在Hibernate里把对应的数据类型成功映射起来就可以成功执行了。
解决方法如下:
import java.sql.Types;
import org.hibernate.Hibernate;
public class MySQL5Dialect extends org.hibernate.dialect.MySQL5Dialect {
public MySQL5Dialect() {
super();
// register additional hibernate types for default use in scalar
// sqlquery type auto detection
registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
}
}
新建一个MySQL5Dialect类,然后在hibernate配置文件或spring配置文件中将hibernate.dialect改成刚才写的那个就可以了.如
<prop key="hibernate.dialect">xxx.util.MySQL5Dialect</prop>
总结:当在hibernate中使用原生态的SQL时,如果在数据库varchar的字段的长度设为过大(比如说为1000)的话,那么就需要自己补充注册新的类型映射,不光是varchar类型,其它类型字段设置过大也会有这样的问题,比如说decimal类型等等,同样也是按这种方法来解决.
hibernate有时还真有点搞人的.
http://hi.baidu.com/sunjsp/blog/item/fa7b57efe4a7b8e6ce1b3eb1.html
发表评论
-
Mysql Too Many Open Files彻底解决办法
2017-02-09 18:19 5132Mysql Too Many Open Files彻底解决办 ... -
mysql快速执行超大sql脚本方法
2015-07-16 16:09 1728使用mysql数据库时,经常会碰到这个问题,特别是sql脚本 ... -
使用MySQL Proxy解决MySQL主从同步延迟
2015-05-13 11:14 538使用MySQL Proxy解决MySQL ... -
数据库sharding(scale up to scale out)
2012-11-16 10:53 686转自:http://eddysheng.iteye.com/b ... -
构建高性能web之路------mysql读写分离实战
2012-11-16 10:37 1076转自:http://blog.csdn.net/cutesou ... -
MySQL主从服务器的原理和设置
2012-11-16 10:24 776一 主从配置的原理 mysql的Replic ... -
MySQL索引分析和优化
2012-04-10 11:02 727什么是索引? 索引用 ... -
MySQL分区表的使用介绍
2012-04-10 10:27 1197MySQL使用分区表的好处: 1,可以把一些归类的数据放在一 ... -
[Err] 1153 – Got a packet bigger than ‘max_allowed_packet’ bytes
2011-10-10 19:07 918mysql> show global variables ... -
2006 - MySQL server has gone away
2011-10-10 19:05 1336命令:show global variables like ' ... -
Mysql索引
2010-02-23 17:30 1022行, 表及文件 每个文件可以划分为数据页(Data ... -
MySQL索引类型一览 让MySQL高效运行起来
2010-02-08 10:08 2708本文介绍了七种MySQL ... -
MySQL中的ORDER BY排序实现方式
2010-02-08 09:51 1332总的来说,在 MySQL 中的ORDER BY有两种排序 ... -
MySQL导入导出.sql文件
2010-02-04 14:37 799MySQL导入导出: http://blog.csdn.ne ... -
Mysql:InnoDB行锁特点
2010-02-03 14:13 964InnoDB行锁特点: http://blog.chin ... -
Mysql:ROW_COUNT()返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数
2010-02-03 14:09 5546在Mysql中ROW_COUNT()返回前一个SQL进行UPD ... -
JDBC调用存储过程详解
2010-02-01 14:47 882最近用到在JDBC中调用Mysql存储过程: try { ... -
Mysql:存储过程中动态SQL返回多个值的写法
2010-01-30 17:48 3010DROP PROCEDURE IF EXISTS TEST; ... -
MySQL错误:Out of range value adjusted for column ...
2010-01-30 17:24 2112写Mysql存储过程时碰见了这样的错误:Out of rang ... -
“0x005346c4”指令引用的“0x00786000”内存,该内存不能为读
2009-11-08 10:43 2001Mysqld-nt.exe应用程序错误: “0x00534 ...
相关推荐
在MySQL中,`VARCHAR`是一种用于存储可变长度字符串的数据类型,它的长度设置是非常关键的,因为它直接影响到存储空间的使用效率和数据的正确性。`VARCHAR`的长度设置方法是通过在类型名后面括号内指定最大字符数,...
在本文中,我们将深入探讨如何使用JDBC连接Oracle、MySQL和SQLServer这三种常见的数据库。 首先,让我们详细了解一下JDBC连接Oracle数据库的过程: 1. **添加驱动**:为了与Oracle数据库通信,你需要在Java项目中...
### SpringBoot+Mybatis-Plus 整合 Sharding-JDBC5.1.1 实现单库分表 #### 一、前言与背景 在现代软件开发中,随着业务量的增长,单一数据库往往难以满足高性能、高并发的需求,因此分库分表成为了一种常见的解决...
### JDBC与MySQL知识点详解 #### 一、MySQL基础操作 **1. 数据库的基本操作** - **创建数据库**: 使用 `CREATE DATABASE` 命令来创建一个新的数据库。 - 示例: `CREATE DATABASE mydb CHARACTER SET utf8;` - ...
在MySQL中,`VARCHAR`类型用于存储可变长度的字符串,它相较于`CHAR`类型更加节省空间,因为它只存储实际输入的数据长度。然而,在数据库设计过程中,有时可能会遇到需要动态修改`VARCHAR`字段长度的情况,这通常是...
在本部分,我们对比了三种数据库(MySQL、Oracle、SQL Server)在Hibernate配置文件中的设置差异。这对于跨数据库开发非常有用。 - **dialect**: 指定了Hibernate使用的方言,它告诉Hibernate如何处理特定数据库的...
本资料包专注于JDBC连接MySQL和sqlserver数据库,包含了相关的测试程序和必要的库文件,如JDBC驱动和Java Development Kit(JDK)。 1. **JDBC基础** - JDBC API提供了一系列的接口和类,如`java.sql....
MySQL中的VARCHAR类型是一种可变长度的字符串数据类型,它在存储空间上相比固定长度的CHAR类型更为节省。本文将深入探讨VARCHAR类型的大小长度问题及其在不同版本和编码下的限制。 首先,VARCHAR字段的长度限制主要...
这些消息通常包含了关于执行SQL语句时出现的问题详情,包括错误代码、描述以及可能的解决方案。通过理解这些SQL消息,用户可以更有效地调试和维护其数据库应用。 #### 二、SQL0440N - 找不到具有兼容自变量的类型为...
### SQL*Loader 超出字符长度错误解析与解决方案 #### 概述 在使用SQL*Loader工具导入数据时,可能会遇到超出字符长度限制的错误。这类问题通常出现在需要将包含较长字符串的数据加载到表中时,而目标列定义的长度...
- Type 1:纯Java实现,通常为ODBC桥接驱动,依赖于操作系统层面的ODBC驱动。 - Type 2:部分Java,部分本地代码,通常用于访问特定数据库的特性。 - Type 3:完全基于Java,使用网络协议与数据库服务器通信,...
### SQL Server 中强大的日期格式化函数:CONVERT 在SQL Server中处理日期和时间数据时,经常需要将日期和时间转换成不同的格式以便于展示或分析。`CONVERT` 函数是SQL Server中最常用的一种方法来实现日期和时间...
varchar(4000)表示最大能存储4000个字符,而varchar(MAX)则可以存储最多2^31-1个字符,即大约2GB的数据。 在实际应用中,当Python需要与SQL Server交互,特别是涉及大数据量的varchar(MAX)字段时,可能会出现一些...
SQL Server JDBC驱动是Java应用程序与Microsoft SQL Server数据库之间通信的桥梁。它允许Java开发者使用标准的JDBC API来执行SQL语句,管理数据库事务,处理结果集等。`sqljdbc4-4.0.jar`是这个驱动的一个特定版本,...
在C:\Program Files\Java目录下建立mysqlforjdbc子目录,进入该目录将mysql-connector-java-5.1.30-bin.jar到该目录下 进入C:\Program Files\Java\jdk1.7.0_04\lib目录将mysql-connector-java-5.1.30-bin-g.jar拷贝...
Java 使用 JDBC 动态创建数据表及 SQL 预处理的方法 Java 使用 JDBC 动态创建数据表及 SQL 预处理的方法是 Java 语言中常用的数据库操作技术。该方法主要涉及到 JDBC 操作数据库的连接、创建表、添加数据、查询等...
Java开发MySQL8的JDBC驱动包是用于在Java应用程序中连接和操作MySQL数据库的重要工具。JDBC(Java Database Connectivity)是Java平台的标准接口,它允许Java程序员使用SQL语句与各种数据库进行通信。MySQL8是世界上...
在将SSH项目从SQL Server 2005迁移至MySQL时,出现的“org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query”异常通常意味着数据访问层在尝试执行SQL查询时遇到了问题。...
mysql,jdbc,Hibernate,tomcat [mysql+jdbc+jsp+Hibernate3.2+tomcattomcat5.028成功测试-简单] <br> 1 .数据库设计:库mydb 表events <br>EVENT_ID BIGINT(20) NOT NULL AUTOINC EVENT_DATE DATETIME...