[英]Issue while creating Oracle ARRAY Type in java using ArrayDescriptor
如果我与oracle直接建立连接,则代码工作正常。
但是,如果我通过Websphere中配置的数据源连接到数据库,则会收到以下异常:
java.sql.SQLException:DSRA9122E:com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@21cf8d56不包装oracle.jdbc.driver.OracleConnection类型的任何对象。
引发此异常的代码如下:
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()方法采用两个参数
1.存储过程名称2.类型为oracle.jdbc.driver.OracleConnection的对象
ArrayDescriptor.createDescriptor("Proc Name", oracleConnection);
jdbcTemplate.getDataSource()。getConnection()方法不会返回oracle.jdbc.driver.OracleConnection类型的对象,并且在尝试解包它时会引发错误。
您需要执行以下操作
1.在配置文件中添加以下提到的条目。
<beans:property name="accessToUnderlyingConnectionAllowed" value="true"/>
2. 将 java.sql.Connection
转换为oracle.jdbc.OracleConnection
并在createDescriptor()方法中使用该连接对象创建oracle.sql.ArrayDescriptor对象。
如果有人遇到类似的问题,请使用Spring支持的WebSphereNativeJdbcExtractor从WSJdbcConnection获取本机连接:
//Extract the native JDBC connection from WSJdbcConnection
WebSphereNativeJdbcExtractor connection = new WebSphereNativeJdbcExtractor();
//Getting the native connection
Connection con=connection.getNativeConnection(jdbcTemplate.getDataSource().getConnection());
ArrayDescriptor desc = ArrayDescriptor.createDescriptor(PROC_IN_PARAM_ALIAS,
con.unwrap(OracleConnection.class));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.