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?

questionAnswers(1)

yourAnswerToTheQuestion