2011-10-03 13 views
1
java.sql.SQLException: could not reset reader 
     at org.hibernate.lob.ClobImpl.getCharacterStream(ClobImpl.java:100) 
     at org.hibernate.type.ClobType.set(ClobType.java:70) 
     at org.hibernate.type.ClobType.nullSafeSet(ClobType.java:141) 
     at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2025) 
     at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2271) 
     at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2688) 
     at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79) 
     at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) 
     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) 
     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167) 
     at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) 
     at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) 
     at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) 

嗨,休眠抛出的SQLException无法复位读者

以上是堆栈跟踪。 它处理的数据量很小,但数据量较大。 我不知道可能是什么问题?

问候, 普里特

+0

你可以发布你如何设置CLOB的代码,以及你使用的是哪个版本的hibernate和DB? – beny23

+0

我如何创建CLOB:Hibernate.createClob(字符串) 版本:3.3.1.GA DB:Oracle – Preet

+0

您是否可以编辑您的文章以包含代码,因为如果阅读器太早关闭,您会看到该错误消息 – beny23

回答

1

我们只是解决了类似的问题,我想万一有人遇到它来形容这里的问题。请注意,有关于相同问题的another question。我们有Oracle 10,Hibernate 3,Java 1.4并修补了Ojdbc14。我们使用Hibernate.createClob(String)创建了CLOB。程序(批处理作业)在大字符串(〜700KB)上失败。

问题是,在Hibernate中,我们首先使用CLOB插入实体并更新它(包括CLOB)。第二次更新是多对一更新的一部分。 CLOB之间没有变化,只是Hibernate想要更新它两次。它得到了这个“无法重置”阅读器错误。它似乎不能使用相同的流两次。我们通过确保CLOB只保存一次来解决这个问题。