Como gravar um java.sql.Array em um java.sql.SQLOutput em SQLData.writeSQL () para Oracle
Eu implementeijava.sql.SQLData
para ligar objetos UDT a instruções preparadas usando ojdbc6. Agora, alguns dos meus UDTs contêm matrizes. O que eu preciso fazer agora é isto:
class MyType implements SQLData {
public void writeSQL(SQLOutput stream) throws SQLException {
Array array = //...
stream.writeArray(array);
}
}
Para construir arrays do Oracle, preciso de uma conexão JDBC. Normalmente, isso é feito como tal:
OracleConnection conn = // ...
Array array = conn.createARRAY("MY_ARRAY_TYPE", new Integer[] { 1, 2, 3 });
No entanto, nessewriteSQL(SQLOutput)
método, eu não tenho uma conexão. Além disso, por razões que são difíceis de explicar em uma questão concisa, não posso manter uma referência de conexãoMyType
. Posso de alguma forma extrair essa conexão deSQLOutput
? Eu gostaria de evitar o uso de construções instáveis como esta:
// In ojdbc6, I have observed a private "conn" member in OracleSQLOutput:
Field field = stream.getClass().getDeclaredField("conn");
field.setAccessible(true);
OracleConnection conn = (OracleConnection) field.get(stream);
Alguma ideia? Alternativas?