gpt4 book ai didi

java - 带有 Oracle com.zaxxer.hikari.pool.HikariProxyCallableStatement 的 HikariCP 无法转换为 oracle.jdbc.OracleCallableStatement

转载 作者:行者123 更新时间:2023-11-30 07:45:02 33 4
gpt4 key购买 nike

我使用 Hikari PoolOracleCallableStatement:

我的数据源:

<bean id="myDataSource" class="com.zaxxer.hikari.HikariDataSource">
<property name="jdbcUrl" value="${my.oracle.url}"/>
<property name="driverClassName" value="oracle.jdbc.pool.OracleDataSource"/>
<property name="username" value="${my.oracle.user}"/>
<property name="password" value="${my.oracle.password}"/>
</bean>

然后我尝试向 Oracle 发出请求: 公共(public)列表 getProducts(int numbersMonths, Long initServiceId,

List<Long> serviceIds) throws SQLException {
Connection cnn = null;
OracleCallableStatement stm = null;
ResultSet rs = null;
List<ProductLink> res = new ArrayList<>();
final String sql = sqlCust(sqlProducts);
try {
cnn = custDataSource.getConnection();
stm = (OracleCallableStatement) cnn.prepareCall(sql);
stm.setPlsqlIndexTable(1, serviceIds.toArray(), serviceIds.size(), serviceIds.size(), OracleTypes.BIGINT, 0);
stm.registerOutParameter(2, OracleTypes.CURSOR);
stm.setLong(3, initServiceId);
stm.setInt(4, numbersMonths);
stm.execute();
rs = stm.getCursor(2);
// do stuff
} catch (SQLException ex) {
DbUtils.closeQuietly(cnn, stm, rs);
throw ex;
} finally {
DbUtils.closeQuietly(cnn, stm, rs);
}

但是我在这一行有错误:stm = (OracleCallableStatement) cnn.prepareCall(sql);

java.lang.ClassCastException: com.zaxxer.hikari.pool.HikariProxyCallableStatement cannot be cast to oracle.jdbc.OracleCallableStatement

还有一个错误:

Failed to create instance of driver class oracle.jdbc.pool.OracleDataSource, trying jdbcUrl resolution
java.lang.ClassCastException: oracle.jdbc.pool.OracleDataSource cannot be cast to java.sql.Driver

在这一行:cnn = custDataSource.getConnection();

怎么了?为什么我会收到此错误?

最佳答案

事实上,由于您使用的是连接池,CallableStatement 实现不是来自驱动程序,而是来自连接池。

要么你应该找到一种方法来访问核心实现(我认为这是有风险的),要么你应该尝试只使用CallableStatement,而不是依赖于Oracle 实现。

关于java - 带有 Oracle com.zaxxer.hikari.pool.HikariProxyCallableStatement 的 HikariCP 无法转换为 oracle.jdbc.OracleCallableStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52120951/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com