最近整一个mysql项目转oracle项目,中间遇到问题挺多,其中最为严重就是mysql中的longtext类型转换到oracle成clob类型的问题。
由于oracle连接采用的是连接池连接方式c3p0,开始在Spring中配置Clob如下:
<bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>
<bean id="oracleLobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor">
<ref bean="nativeJdbcExtractor"/>
</property>
</bean>
在sessionFactory中配置<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
......
<property name="lobHandler" ref="oracleLobHandler"/>
</bean>
然后进行保存操作时,会出现如下错误:
Caused by: java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to oracle.jdbc.OracleConnection
at oracle.sql.CLOB.createTemporary(CLOB.java:754)
at oracle.sql.CLOB.createTemporary(CLOB.java:716)
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:597)
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.prepareLob(OracleLobHandler.java:541)
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:488)
... 67 more
最终找问题时发现在配置文件时是有特殊要求的,我们看错误会发现报的是c3p0的错误,不难发现配置肯定是哪里出了问题。
最终修改配置如下:
<bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor"/>
<bean id="oracleLobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor">
<ref bean="nativeJdbcExtractor"/>
</property>
</bean>
改为org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor
就可以解决问题了。所以以后注意啦,如果你没有采用连接池配置,可进行原给出的配置。
做一点说明,我使用的Hibernate配置,在映射文件中还得针对clob类型加入:
type="org.springframework.orm.hibernate3.support.ClobStringType"
分享到:
相关推荐
确保 Hibernate 的配置文件(通常为 `hibernate.cfg.xml` 或者 Spring 的配置文件)正确配置了数据库连接信息,以及支持 CLOB 类型的配置。 **2.2 实体类设计** 假设我们有一个用户实体类 `User`,其中包含一个 ...
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。
本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...
一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...
MyBatis 提供了对 CLOB 和 BLOB 类型的内置支持,通过将 CLOB 类型映射到 Java 的 String 类型,BLOB 类型映射到 byte[] 类型。 在使用 MyBatis 时,需要在实体类中定义对应的字段类型,例如: ```java public ...
为了能够通过Spring框架操作数据库中的BLOB数据,需要对`sqlMapConfig.xml`进行适当的配置。以下是一个配置示例: ```xml <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" ...
总之,处理Oracle数据库中的LOB字段需要对Spring、Hibernate以及Oracle JDBC驱动有深入理解。通过合理配置和使用相应的API,我们可以有效地管理大体积数据,实现与数据库的高效交互。在实际项目中,根据具体需求和...
同时,Spring还提供了对其他框架(如Hibernate)的集成,使得开发者能更方便地使用这些框架。 3. Hibernate:Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL...
在使用Spring与Oracle的BLOB字段交互时,确保正确配置数据源和JDBC驱动。同时,Oracle数据库的特定特性,如LOB缓存策略、LOB的生命周期管理等,也需要根据项目需求进行适当调整。 总之,Spring和Oracle结合处理BLOB...
Oracle支持复杂的数据类型,如BLOB和CLOB,以及高级的数据库特性,如物化视图、分区表和触发器。在Java开发中,通常通过JDBC驱动与Oracle进行交互,或者利用Hibernate等ORM框架进行更高级别的操作。 这四个技术的...
开发者需要配置Spring的bean定义,实现SpringMVC的控制器,定义Mybatis的Mapper接口和SQL映射文件,设置Tomcat服务器,并在Oracle数据库中创建对应的表结构。整个过程涉及大量的配置和代码编写,但一旦完成,就能...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 ...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 ...
这个压缩包文件"spring1.2+hibernate3对大字段的处理实例"提供了一个具体的案例,演示了如何在Spring 1.2和Hibernate 3框架下解决这个问题。下面我们将深入探讨这些知识点。 首先,Spring 1.2是一个轻量级的Java...
总的来说,ojdbc6-1.jar是Spring Boot项目与Oracle数据库交互的关键组件,理解其工作原理和配置方法对于开发高效、稳定的Java应用至关重要。正确使用和配置Oracle JDBC驱动,可以确保项目能够顺利地连接和操作Oracle...
在IT领域,尤其是在Java开发中,Spring和Hibernate是两个非常重要的框架。...这个"spring1.2+hibernate2对大字段的处理实例"就是一个很好的学习资源,能够帮助开发者深入理解如何在旧版框架下处理这类问题。
在Java的数据库编程中,JDBC(Java Database Connectivity)是一个重要的接口,用于与各种数据库进行交互。当涉及到处理大型对象...无论是直接使用JDBC还是结合ORM框架,都可以灵活地实现对Blob和Clob的读写操作。
文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...
Oracle提供多种数据类型,如CHAR、VARCHAR2、NUMBER、DATE以及LOB(包括BLOB和CLOB)。日期格式可以使用TO_DATE函数转换,例如`to_date('2016-6-1','yyyy-MM-dd')`,或者直接使用DATE'2016-6-1'。 分析函数如RANK()...