使用ArrayDescriptor在Java中创建Oracle ARRAY类型时出现问题 [英] Issue while creating Oracle ARRAY Type in java using ArrayDescriptor
问题描述
如果我与oracle直接建立连接,则代码运行正常.
但是,如果我通过Websphere中配置的数据源连接到数据库,则会收到以下异常:-
If I am making a direct connection with oracle, the code is working fine.
But If I am connecting to database through datasource configured in Websphere, receiving below exception:-
java.sql.SQLException:DSRA9122E: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@21cf8d56不包装任何内容 oracle.jdbc.driver.OracleConnection类型的对象.
java.sql.SQLException: DSRA9122E: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@21cf8d56 does not wrap any objects of type oracle.jdbc.driver.OracleConnection.
引发此异常的代码如下:-
Code that is throwing this exception is below:-
ArrayDescriptor desc = ArrayDescriptor.createDescriptor(PROC_IN_PARAM_ALIAS, jdbcTemplate.getDataSource().getConnection()
.unwrap(OracleConnection.class));
推荐答案
您的错误说明了一切-
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@21cf8d56 不包装任何类型为oracle.jdbc.driver.OracleConnection的对象.
createDescriptor()方法采用两个参数
createDescriptor() method takes two parameter
1.存储过程名称 2. oracle.jdbc.driver.OracleConnection类型的对象
1.Stored procedure name 2.An object of type oracle.jdbc.driver.OracleConnection
ArrayDescriptor.createDescriptor("Proc Name", oracleConnection);
jdbcTemplate.getDataSource().getConnection()方法不会返回oracle.jdbc.driver.OracleConnection类型的对象,并且在尝试对其进行拆包时,会引发错误.
jdbcTemplate.getDataSource().getConnection() methods does not returns object of type oracle.jdbc.driver.OracleConnection and while you are trying to unwrap it, it's throwing error.
您需要执行以下操作
1.在配置文件中添加以下提到的条目.
1.Add below mentioned entry in your configuration file.
<beans:property name="accessToUnderlyingConnectionAllowed" value="true"/>
2. 转换 java.sql.Connection
到oracle.jdbc.OracleConnection
,并在createDescriptor()方法中使用该连接对象创建oracle.sql.ArrayDescriptor对象.
2.Convert java.sql.Connection
to oracle.jdbc.OracleConnection
and use that connection object in createDescriptor() method to create your oracle.sql.ArrayDescriptor object.
这篇关于使用ArrayDescriptor在Java中创建Oracle ARRAY类型时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!