CLOB字段含义:是文本类型的大对象,一般varch2字段的长度在4000以内,超出2000的话一般就需要用clob字段,否则会报错:
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
当varchar2类型的长度超过2000至4000(最大值)之间的时候,oracle会自动将该字段值转为long型的。
1,在spring的配置文件中配置:
<!-- 解决CLOB -->
<!-- Oracle9i的配置-->
<bean id="oracleLobHandler" class ="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init ="true" >
<property name ="nativeJdbcExtractor" ref ="nativeJdbcExtractor"/>
</bean >
<bean id="nativeJdbcExtractor"
class ="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
lazy-init ="true"/>
<!-- Oracle9i的配置-->
<bean id="oracleLobHandler" class ="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init ="true" >
<property name ="nativeJdbcExtractor" ref ="nativeJdbcExtractor"/>
</bean >
<bean id="nativeJdbcExtractor"
class ="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
lazy-init ="true"/>
<!--Oracle10g的配置 对应的应该使用Oracle10g对应的JDBC驱动 -->
<bean id="oracleLobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>
并且将oracleLobHandler加入到SessionFactory中去,即在
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
...
中加入<property name="oracleLobHandler" ref="oracleLobHandler"></property>
...
</bean>关联起来,到这里spring里的配置已经完成.
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
...
中加入<property name="oracleLobHandler" ref="oracleLobHandler"></property>
...
</bean>关联起来,到这里spring里的配置已经完成.
2,在hbm.xml的映射文件中配置:
<property name="description" column="DESCRIPTION"
type="org.springframework.orm.hibernate3.support.ClobStringType"
update="false"
insert="true" />
type="org.springframework.orm.hibernate3.support.ClobStringType"
update="false"
insert="true" />
注:update="false"这样的设置会让CLOB的操作更加稳定(因为完全交给JDBC来做);
insert="true"若设置为false时,保存不了数据到该字段中;
更新时读取CLOB字段为NULL时转换会报错,所以将此字段设置为
alter table A modify DESCRIPTION default EMPTY_CLOB() ;
alter table A modify DESCRIPTION default EMPTY_CLOB() ;
3,业务逻辑层对该字段的操作必须需要在有事务管理的类以及方法中使用,否则会报:
java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with 'jtaTransactionManager' on LocalSessionFactoryBean required
java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with 'jtaTransactionManager' on LocalSessionFactoryBean required
当然如果以上配置都已近存在了的话,我们也可以通过语句来操作:
DELETE A;
alter TABLE A modify DESCRIPTION long;
alter TABLE A modify DESCRIPTION clob;
相关推荐
CLOB、BLOB 与 CLOB 与 BLOB 的区别 CLOB(Character Large OBject)是一种数据库类型,用于存储大型字符对象。它是 SQL 类型,用于存储字符大对象(Character Large Object),将字符大对象存储为数据库表某一行中...
在数据库编程领域,CLOB(Character Large Object)和BLOB(Binary Large Object)是用于存储大量文本和二进制数据的数据类型。在DELPHI中,处理这些大型对象时需要特殊的技术和策略。本篇文章将深入探讨DELPHI中...
### WebLogic 下 Oracle CLOB 类型转换解决方案 在使用 WebLogic 服务器进行应用程序开发时,尤其是在处理 Oracle 数据库中的 CLOB 类型数据时,开发者可能会遇到类型转换的问题。本文将详细介绍如何通过反射机制来...
在数据库中,CLOB(Character Large Object)类型用于存储大文本数据,如长篇文章或XML文档。在使用MyBatis框架进行数据操作时,我们可能会遇到CLOB类型数据的读写问题,尤其是在转换和插入数据库时。本篇将详细探讨...
在探讨“数据库中CLOB类型转换的问题”这一主题时,我们首先需要理解CLOB(Character Large Object)数据类型的基本概念及其在数据库中的应用场景。随后,将深入分析CLOB类型转换过程中可能遇到的问题,并提供相应的...
当我们在处理大型文本数据时,例如XML文档、长篇文章或者大段代码,数据库通常会提供CLOB(Character Large Object)类型来存储这类数据。本主题主要探讨如何使用JDBC有效地操作Oracle数据库中的CLOB类型字段,包括...
### 数据库读取CLOB字段 #### 概述 在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。...
大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...
dblink_clob字段异常解决方案 在数据库.link连接远程数据库时,经常会遇到无法使用CLOB字段的问题,这是因为CLOB字段在远程数据库中的处理方式与本地数据库不同所导致的。下面将讨论解决dblink_clob字段异常的解决...
### 读取Oracle数据库中CLOB字段的值 在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能...
在处理Oracle数据库中的大文本数据时,CLOB(Character Large Object)类型被广泛应用于存储大量字符数据,如文章、报告或任何大型文本信息。本文将详细介绍如何有效地向Oracle数据库插入Clob大段文本,以及在操作...
### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...
### Java存储Oracle中的CLOB类型知识点详解 #### 一、CLOB类型简介及Java操作方法 CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。...
在IT领域,尤其是在数据库操作与数据管理中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,常用于保存如文章、报告、注释等大文本信息。本文将详细解析CLOB的读写问题,包括其在Oracle...
Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...
在Oracle数据库中,当我们遇到需要存储超过4000个字符的文本数据时,使用CLOB(Character Large Object)类型便显得尤为重要。下面将详细介绍如何在C#环境下通过Oracle.NET接口实现将长于4000字符的字符串转化为CLOB...
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...
在数据库管理领域,BLOB(Binary Large Object)和CLOB(Character Large Object)是两种用于存储大量非结构化数据的数据类型。它们都是Oracle数据库中重要的字段类型,用于处理大数据量的文本或二进制文件。了解...
### JDBC中操作Blob、Clob等对象 #### 一、简介 在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob...
在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...