使用Hibernate+;获取CLOB数据时发生java.sql.SQLRecoverableException;甲骨文11g

使用Hibernate+;获取CLOB数据时发生java.sql.SQLRecoverableException;甲骨文11g,hibernate,oracle11g,java-6,clob,Hibernate,Oracle11g,Java 6,Clob,我在java web应用程序中使用Hibernate从Oracle 11g获取CLOB数据时遇到“java.sql.SQLRecoverableException:Closed Connection”异常。对于DB连接,我已经实现了Tomcat7数据源 以下是我得到异常的来源: java.sql.Clob reqClob= userBean.getRequestData(); Reader clbReader = reqClob.getCharacterStream(); java.sql.S

我在java web应用程序中使用Hibernate从Oracle 11g获取CLOB数据时遇到“java.sql.SQLRecoverableException:Closed Connection”异常。对于DB连接,我已经实现了Tomcat7数据源

以下是我得到异常的来源:

java.sql.Clob reqClob= userBean.getRequestData();
Reader clbReader = reqClob.getCharacterStream();
java.sql.SQLRecoverableException: Closed Connection
at oracle.sql.CLOB.getDBAccess(CLOB.java:1389)
at oracle.sql.CLOB.getCharacterStream(CLOB.java:309)
at org.hibernate.lob.SerializableClob.getCharacterStream(SerializableClob.java:41)
在执行“clob.getCharacterStream()”的上述代码中,我得到以下异常:

java.sql.Clob reqClob= userBean.getRequestData();
Reader clbReader = reqClob.getCharacterStream();
java.sql.SQLRecoverableException: Closed Connection
at oracle.sql.CLOB.getDBAccess(CLOB.java:1389)
at oracle.sql.CLOB.getCharacterStream(CLOB.java:309)
at org.hibernate.lob.SerializableClob.getCharacterStream(SerializableClob.java:41)
请注意,我可以从userBean获取其他值的数据

以下是我在应用程序中使用的应用程序版本:

jdk1.6.0_33 (64bit version)  
hibernate3.jar 
ojdbc6.jar 
Oracle 11g 11.2.0.1.0 - (64bit version)
一个奇怪的行为是,一旦我开始使用Tomcat7数据源,我就会遇到这个问题

下面是Context.xml中的数据源代码:

<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" 
factory="oracle.jdbc.pool.OracleDataSourceFactory" name="jdbc/XXXX" password="XXXXX" 
type="oracle.jdbc.pool.OracleDataSource" 
url="jdbc:oracle:thin:@xx.xx.xx.xxxx:xxxx:xxxxxx" user="username"
connectionProperties="SetBigStringTryClob=true;" maxActive="20"
maxIdle="10" maxWait="-1" validationQuery="select 1 from dual" />

我已经在上面的代码中尝试了所有可能的参数,但没有成功


提前感谢你们的帮助,伙计们…

我遇到了类似的问题,我将Clob更改为字符串,如下所示:

String clobAsString = clob.getSubString(1, (int)clob.length());
确保在连接处于活动状态时执行此操作。像刀一样。
这必须在从DB检索Clob元素的事务中执行。

我今天遇到了相同的问题,并且总是在调用
getSubString
getCharacterStream
时出现了关闭连接错误

我用注释解决了问题,并删除了Clob类型:

@Column(name = "CL_JSON_OUT", nullable = false)
private Clob jsonOut;
致:


帮助我

请回复我,伙计们……这是我的表演止点(你设法克服了这个困难吗?