Cómo escribir un java.sql.Array en un java.sql.SQLOutput dentro de SQLData.writeSQL () para Oracle

He implementadojava.sql.SQLData para enlazar objetos UDT a declaraciones preparadas usando ojdbc6. Ahora, algunos de mis UDT contienen matrices. Lo que necesito hacer ahora es esto:

class MyType implements SQLData {
  public void writeSQL(SQLOutput stream) throws SQLException {
    Array array = //...
    stream.writeArray(array);
  }
}

Para construir matrices Oracle, necesito una conexión JDBC. Típicamente, esto se hace como tal:

OracleConnection conn = // ...
Array array = conn.createARRAY("MY_ARRAY_TYPE", new Integer[] { 1, 2, 3 });

Sin embargo, en esewriteSQL(SQLOutput) Método, no tengo conexión. Además, por razones que son difíciles de explicar en una pregunta concisa, no puedo mantener una referencia de conexión enMyType. ¿Puedo de alguna manera extraer esa conexión deSQLOutput? Me gustaría evitar el uso de construcciones inestables 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);

¿Algunas ideas? ¿Alternativas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta