有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ComboPooledDataSource com。太阳代理$Proxy78无法强制转换为oracle。sql。克洛布

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

  • $Proxy78不能强制转换为oracle。sql。克洛布

有人知道怎么解决这个问题吗

完整堆栈跟踪如下所示

Caused by: java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.ClassCastException: com.sun.proxy.$Proxy78 cannot be cast to oracle.sql.CLOB at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65) at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62) at com.mchange.v2.c3p0.impl.NewPooledConnection.handleThrowable(NewPooledConnection.java:432) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setClob(NewProxyPreparedStatement.java:535) at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$2$1.doBind(ClobTypeDescriptor.java:70) at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1$1.doBind(ClobTypeDescriptor.java:56) at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91) at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283) at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278) at org.hibernate.type.ComponentType.nullSafeSet(ComponentType.java:340) at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2184) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2559) ... 71 more Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy78 cannot be cast to oracle.sql.CLOB at oracle.jdbc.driver.OraclePreparedStatement.setClob(OraclePreparedStatement.java:6559) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setClob(OraclePreparedStatementWrapper.java:158) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setClob(NewProxyPreparedStatement.java:521) ... 79 more


共 (1) 个答案

  1. # 1 楼答案

    所以,这是一个奇怪的问题。c3p0不代理CLOB。不知何故,您得到的CLOB被包装在一个Java标准动态代理后面。你需要弄清楚这是怎么发生的。你的代理CLOB对象来自哪里

    看起来hibernate有时会代理CLOB,请参见ClobProxy。也许这就是为什么你有一个代理,而不是你的司机所期望的那种CLOB