0 0

hibernate操作clob出错25

现在项目使用hibernate遇到了一个很棘手的问题,就是在操作clob字段的时候当长度超过1000的时候就会报错:
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into DT_CONFIGINFO (OPERATETYPE, OBJECTTYPE, CLASSNAME, CONFIGTIME, ISCONFIRM, USERLABEL, OBJECTNAME, CONFIGINFO, CONFIRMTIME, UUID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [72000]; error code [1483]; ORA-01483: DATE 或 NUMBER 绑定变量的长度无效
; nested exception is java.sql.BatchUpdateException: ORA-01483: DATE 或 NUMBER 绑定变量的长度无效

Caused by: java.sql.BatchUpdateException: ORA-01483: DATE 或 NUMBER 绑定变量的长度无效

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
at sun.reflect.GeneratedMethodAccessor325.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
at $java.sql.Statement$$EnhancerByProxool$$545ba5a8.executeBatch(<generated>)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:632)
at com.metarnet.cms.conf.ConfigPersistentManagerImpl.saveConfigData(ConfigPersistentManagerImpl.java:48)
at com.metarnet.cms.conf.ManagedJobConfigSyncNewEMSImpl.start(ManagedJobConfigSyncNewEMSImpl.java:201)
at com.metarnet.cms.job.JobManagerImpl.runJob(JobManagerImpl.java:214)
at com.metarnet.cms.job.QuartzJob.execute(QuartzJob.java:16)
at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
我使用数据库驱动是最新的,ojdbc14 10.2.0.1.0和10.2.0.4.0都用过,hbm.xml文件里是这样映射的
<property
name="Configinfo"
column="CONFIGINFO"
type="text"
not-null="false"
/>
我还尝试加上length="10000"但是无济于事。不知道到底是什么原因
2008年6月03日 10:07

5个答案 按时间排序 按投票排序

0 0

采纳的答案

你的映射写错了
<property name="nr" type="org.springframework.orm.hibernate3.support.ClobStringType">
            <column name="NR" />
        </property>
你应该写成spring的映射中间类型。把clob交给spring去处理,你所处理的还是string而已。当然在spring的配置文件中要添加spring的colb插件。
<bean id="oracleLobHandle"
class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true">
<property name="nativeJdbcExtractor">
<ref local="nativeJdbcExtractor" />
</property>
</bean>
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />

2008年6月16日 13:38
0 0

type="text",驱动使用ojdbc5.jar.
上次我也是遇到这个问题,本来想改代码的,后来有一同事找来了个比较新的驱动,代码都不用动就解决了。

2008年6月05日 12:03
0 0

换个新驱动,当成varchar处理。 ojbdc14_g.jar

2008年6月05日 10:11
0 0

使用ojdbc14_g.jar,然后type="java.lang.String"

2008年6月04日 17:37
0 0

text 是不能超过太多的字符的,超过了就会报错,
你可以把它映射成java.sql.clob类型 这样的话,你想存多少就多少

2008年6月03日 11:06

相关推荐

    Hibernate注解jar包

    Hibernate是Java领域中一款广泛应用的...总的来说,Hibernate注解让Java开发者能够更直观地将对象模型映射到数据库,提高了开发效率,降低了出错概率。理解并熟练运用这些注解,是提升Java企业级开发能力的重要一步。

    Hibernate 注解大全

    熟练掌握这些注解,能帮助开发者更加高效地利用Hibernate进行数据库操作,提高开发效率并减少出错可能性。 通过阅读《Hibernate注释.doc》和《Hibernate注释大全.txt》这两个文档,你可以获得更详细的信息,深入...

    hibernate注解

    ### Hibernate注解详解:提升Java持久化操作效率与灵活性 #### Hibernate注解概述 Hibernate作为一款优秀的Java持久层框架,提供了强大的ORM(Object-Relational Mapping)功能,它能够将Java对象模型映射到关系...

    hibernate开发手册

    4. **二进制和LOB支持**:对于处理大型对象(LOBs)如BLOB和CLOB,Hibernate 3.1提供了更好的支持,包括更高效的存储和检索策略。 5. **事务管理改进**:对JTA(Java Transaction API)的支持得到增强,使得在...

    hibernate的一份知识点总结

    - JDBC操作复杂且易出错。 - SQL非面向对象,不易于复用和维护。 - ORM简化了数据访问层的编程,提高开发效率。 - ORM可跨数据库平台,提高代码移植性。 **3. 常见的O/R框架** - Hibernate:广泛使用的ORM框架...

    hibernate注解中英文版

    在Java世界里,Hibernate是一个非常流行的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以用面向对象的方式来处理数据。本资源主要关注的是Hibernate中的注解,包括中文版和英文版的文档,这...

    hibernate-annotations-3.4.0.GA.rar

    Hibernate作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的方式来处理数据库,而无需直接编写SQL语句。在Hibernate 3.3.2版本中,其对注解的支持进一步加强,...

    hibernate 注解

    Hibernate注解是Java持久化框架Hibernate中的一种元数据方式,它允许...理解并熟练运用Hibernate注解,能够极大地提高开发效率,并降低出错的可能性。在实际项目中,结合实例练习,将有助于更深入地掌握这一技术。

    一些常用的有关java的chm文档

    理解并熟练运用这些注解,开发者可以有效地使用Hibernate进行数据库操作,提高开发效率,减少出错的可能性。在实际项目中,结合JPA(Java Persistence API)和Spring Data,这些注解的作用更为显著,能够实现快速的...

    数据库的各种连接技巧

    使用ORM框架(如Hibernate、MyBatis等)可以简化数据库交互过程,并提供对象级别的操作方式。这不仅提高了开发效率,还降低了出错的可能性。 #### 十、SQL语句优化 最后,对SQL语句进行优化是非常重要的一步。这...

Global site tag (gtag.js) - Google Analytics