Pobieranie oracle.jdbc.driver.LogicalConnection wymaga oracle.jdbc.OracleConnection
Próbuję połączyć się z bazą danych Oracle w aplikacji Java działającej na serwerze WebSphere. Muszę być w stanie utworzyć deskryptor tablicy, aby użyć go w wywołaniu procedury.
Kod wygląda tak:
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());
Linia, która dzwoniArrayDescriptor.createDescriptor
rzuca wyjątek rzucania klasy
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)
Przechodząc przez to z debuggerem, widzę toconn
jest zdecydowanie aoracle.jdbc.driver.LogicalConnection
. Problem polega na tym, że nie mogę się odwołaćLogicalConnection
w moim kodzie, ponieważ ta klasa nie jest publiczna, więc nie mogę po prostu zrobić czegoś takiego:
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((LogicalConnection)conn).getWrapper());
.
I to:
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((oracle.jdbc.driver.OracleConnection)conn).getWrapper());
zwraca także wyjątek rzucania klasy:
java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.driver.OracleConnection
Muszę miećOracleConnection
obiekt, ale wydaje mi się, że nie mogę go zdobyćLogicalConnection
to mi się wróci. Czy ktoś kiedyś to widział? Czuję, że brakuje mi tutaj czegoś naprawdę oczywistego, ale może po prostu potrzebuję kolejnej filiżanki kawy ...