ComboPooledDataSource -com.sun.proxy。$ Proxy78无法强制转换为oracle.sql.CLOB

时间:2013-10-10 13:00:41

标签: java hibernate connection-pooling c3p0

我正在尝试使用C3P0连接池(com.mchange.v2.c3p0.ComboPooledDataSource c3p0-0.9.1.2.jar),但是在尝试加载持有Clob的对象时我收到此错误(Oracle数据库):

  • $ Proxy78无法转换为oracle.sql.CLOB

有谁知道如何解决这个问题?

完整堆栈跟踪如下

  

引起:java.sql.SQLException:SQLException是由   以下失败:java.lang.ClassCastException:   com.sun.proxy。$ Proxy78无法强制转换为oracle.sql.CLOB                   在com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)                   在com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)                   在com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62)                   在com.mchange.v2.c3p0.impl.NewPooledConnection.handleThrowable(NewPooledConnection.java:432)                   在com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setClob(NewProxyPreparedStatement.java:535)                   在org.hibernate.type.descriptor.sql.ClobTypeDescriptor $ 2 $ 1.doBind(ClobTypeDescriptor.java:70)                   在org.hibernate.type.descriptor.sql.ClobTypeDescriptor $ 1 $ 1.doBind(ClobTypeDescriptor.java:56)                   在org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91)                   在org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283)                   at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278)                   在org.hibernate.type.ComponentType.nullSafeSet(ComponentType.java:340)                   在org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2184)                   在org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2559)                   ... 71更多引起:java.lang.ClassCastException:com.sun.proxy。$ Proxy78无法强制转换为oracle.sql.CLOB                   at oracle.jdbc.driver.OraclePreparedStatement.setClob(OraclePreparedStatement.java:6559)                   at oracle.jdbc.driver.OraclePreparedStatementWrapper.setClob(OraclePreparedStatementWrapper.java:158)                   在com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setClob(NewProxyPreparedStatement.java:521)                   ... 79更多

1 个答案:

答案 0 :(得分:0)

所以,这是一个奇怪的。 c3p0不代理CLOB。不知何故,你得到的CLOB已经被Java标准动态代理包围了。你需要弄清楚这是怎么回事。您的代理CLOB对象来自哪里?

看起来hibernate有时会代理CLOB,请参阅ClobProxy。也许这就是为什么你有一个代理而不是你的驱动程序期望的那种CLOB?