我有一个 ResultSet 对象,我需要将其转换为 OracleResultSet 以便可以在其上调用 getOPAQUE(String) 方法。我使用 c3p0 作为我的连接池。问题是 c3p0 将 ResultSets 包装在 NewProxyResultSet 对象中。
这应该不是问题,因为我应该能够像这样在 ResultSet 上调用 unwrap:
rs.unwrap(OracleResultSet.class)
但是,这是行不通的。它实际上抛出了一个 AbstractMethodError:
java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyResultSet.unwrap(Ljava/lang/Class;)Ljava/lang/Object;
它包括一个堆栈跟踪,但它没有帮助,因为堆栈跟踪的顶行只是指向我调用 unwrap 方法的确切行。这似乎表明 NewProxyResultSet 本身没有实现 unwrap。
这是怎么回事?如何获取 NewProxyResultSet 并从中获取 OracleResultSet?