`
pxx199248
  • 浏览: 17900 次
  • 性别: Icon_minigender_1
  • 来自: 衡阳
社区版块
存档分类
最新评论

hibernate oracle clob 大字段问题解决

阅读更多

今天想把这个问题分享一下。。情况是这样的

我们开发框架式sping3+struts2+hibernate3.6注解, 如注解实体大字段配置

@Lob
@Column(name="DESCRIPTION",nullable=false)
private String description;

 客户要求使用oracle数据库,但是我们为了方便测试所以使用了mysql数据库,由Mysql的dialog生成的脚本,这个字段的

类型是longtext,这不导致我们测试没问题,可是不久问题来了,当我们把项目发布到客户服务器上时脚本由oracle的dialog生成的脚本,但是这个脚本类型是clob ,开始我们没在意,后来一测试,bug他来了:

java.lang.ClassCastException: $Proxy65 cannot be cast to oracle.sql.CLOB

	oracle.jdbc.driver.OraclePreparedStatement.setClob(OraclePreparedStatement.java:6559)
	oracle.jdbc.driver.OraclePreparedStatementWrapper.setClob(OraclePreparedStatementWrapper.java:158)
	org.apache.commons.dbcp.DelegatingPreparedStatement.setClob(DelegatingPreparedStatement.java:184)
	org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1.doBind(ClobTypeDescriptor.java:60)
	org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:89)
	org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:282)
	org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:277)
	org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:85)
	org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2166)
	org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2412)
	org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2856)
	org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
	org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
	org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
	org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
	org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
	org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
	org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
	org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
	org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
	org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	$Proxy31.validateAccount(Unknown Source)
	com.estqi.zdt.action.LoginAction.login(LoginAction.java:83)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
	com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
	org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88)
	org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
	com.estqi.zdt.filter.LoginFilter.doFilterInternal(LoginFilter.java:59)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
这不bug说来就来了,我看了一下立即百度+google,那可为一篇混乱,我找了又找终于发现啊,终于发现。。
。你们不知道,那可找了我一个通宵啊,,,泪奔,好吧说说正事吧,是这样的:
	原来是hibernate的版本问题,,我的是hibernate3.6 ,可恶的3.6,,我换了一个版本3.8嘿嘿,成了,
哎还是38好啊,嘿嘿,开个玩笑...ok搞定


  


  
分享到:
评论

相关推荐

    spring+hibernate 解决大字段(clob)

    本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...

    Hibernate存储Clob字段的方式总结

    Hibernate存储Clob字段的方式总结涉及了在Java开发中使用Hibernate操作大型文本字段Clob的操作方法。本文主要介绍了两种操作Clob字段的方法,一种是将Clob字段直接映射为String类型,另一种是使用Clob类型进行处理。...

    spring+hibernate操作oracle的clob字段

    在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB字段常被用来存储超过4000字节的信息。Spring和Hibernate框架结合使用可以有效地进行CLOB字段的操作。以下是实现这一功能的关键步骤和...

    关于Oracle的 Clob数据类型在Hibernate中的应用小结

    在Hibernate中,如果Clob字段的值是字符串,可以通过将Clob字段映射为String类型,让Hibernate自动处理转换。这种方式简单易用,但可能不适合非常大的文本,因为可能会导致内存溢出。 3.3 直接使用Clob类型: 对于...

    hibernate存取oracle的clob

    ### Hibernate 存取 Oracle 的 CLOB 在 Java 开发中,使用 Hibernate 框架进行数据库操作是非常常见的。其中,处理 Oracle 数据库中的 CLOB 类型数据是一项重要的技能。CLOB(Character Large Object)是一种用于...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    Oracle JDBC驱动提供了一些特定的方法,如`OracleClob`和`OracleBlob`,可以直接操作Clob和Blob。这些类提供了更底层的访问接口,例如`createTemporary()`,可以创建临时的Clob或Blob,用于处理一次性数据。 5. **...

    Hibernate操作Oarcle中Clob、Blob字段小结

    在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...

    hibernate动态映射表处理oracle的clob类型

    本主题“hibernate动态映射表处理Oracle的CLOB类型”主要聚焦于如何在Hibernate中有效地管理和操作CLOB字段。在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍...

    Spring+Hibernate处理Oracle lob字段(一)

    在实际开发中,处理这类数据时可能会遇到一些挑战,本文将提供解决这些问题的策略。 首先,我们来了解Spring和Hibernate这两个关键的组件。Spring是一个全面的企业级应用框架,它提供了依赖注入、AOP(面向切面编程...

    Hibernate对BLOB CLOB操作

    首先,我们来看一下如何在数据库中创建包含BLOB和CLOB字段的表。例如,以下SQL语句创建了一个名为`users`的表,其中`uids`为主键,`img`为BLOB类型,`txt`为CLOB类型: ```sql CREATE TABLE users ( uids int ...

    使用hibernate对oracle读取blob

    Oracle数据库是广泛使用的数据库系统,它支持Blob类型的字段。Hibernate作为一款流行的ORM(对象关系映射)框架,提供了与Oracle数据库交互的简便方式,包括处理Blob数据。本文将详细介绍如何使用Hibernate和JDBC...

    关于Clob类型在Hibernate中 的应用小结

    在Hibernate的XML映射文件中,你需要为这个Clob字段指定映射规则,例如: ```xml <property name="summaryClob" type="org.hibernate.type.ClobType"> <column name="SUMMARY_CLOB" /> ``` **CRUD操作**: ...

    spring1.2+hibernate3对大字段的处理实例,供大家学习与交流,可直接运行

    这个压缩包文件"spring1.2+hibernate3对大字段的处理实例"提供了一个具体的案例,演示了如何在Spring 1.2和Hibernate 3框架下解决这个问题。下面我们将深入探讨这些知识点。 首先,Spring 1.2是一个轻量级的Java...

    spring1.2+hibernate2对大字段的处理实例

    Hibernate2支持将Java的`java.sql.Blob`和`java.sql.Clob`对象映射到数据库的Blob和Clob字段,这样可以存储大数据而不影响其他字段。 2. **文件系统存储**:大字段数据可以存储在文件系统中,然后在数据库中仅存储...

    解析使用jdbc,hibernate处理clob/blob字段的详解

    在Java的数据库操作中,`CLOB...总之,无论是使用JDBC还是Hibernate,处理`CLOB`和`BLOB`字段都需要特殊的处理方式,尤其是在Oracle等数据库中。了解这些处理方法对于开发涉及大数据量文本和二进制数据的应用至关重要。

    Hibernate操作数据库大字段的示例(附源码及详细开发使用方法)。

    // 对应数据库中的CLOB字段 // getters and setters } ``` `@Lob`注解表明`content`字段是大字段类型,Hibernate会自动处理它的存储和读取。 **三、持久化操作** 1. **保存/更新大字段**:在保存或更新实体时...

    spring+hbernate对clob、blob字段的处理

    一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...

Global site tag (gtag.js) - Google Analytics