Para obtener oracle.jdbc.driver.LogicalConnection, necesita oracle.jdbc.OracleConnection
Estoy tratando de conectarme a una base de datos Oracle dentro de una aplicación Java que se ejecuta en WebSphere. Necesito poder crear un descriptor de matriz para usar en una llamada a un procedimiento.
El código se ve así:
Connection conn=null;
ArrayDescriptor arrayDescriptor;
Connection tmpCon = jdbcTemplate.getDataSource().getConnection();
conn = WSCallHelper.getNativeConnection(tmpCon);
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",conn);
IDs = new oracle.sql.ARRAY(arrayDescriptor, conn, list.toArray());
La linea que llamaArrayDescriptor.createDescriptor
lanza una excepción de reparto de clase
java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.OracleConnection at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:149) at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:115)
Caminando a través de esto con el depurador, puedo ver queconn
es definitivamente unoracle.jdbc.driver.LogicalConnection
. El problema es que no puedo realmente referenciaLogicalConnection
en mi código porque esa clase no es pública, así que no puedo hacer algo como esto:
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((LogicalConnection)conn).getWrapper());
.
Y esto:
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((oracle.jdbc.driver.OracleConnection)conn).getWrapper());
También devuelve una excepción de reparto de clase:
java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.driver.OracleConnection
Necesito tener unOracleConnection
objeto, pero parece que no puedo conseguir uno de laLogicalConnection
que se me devuelve ¿Alguien ha visto esto antes? Siento que me estoy perdiendo algo realmente obvio aquí, pero tal vez solo necesito otra taza de café ...