Jak napisać java.sql.Array do java.sql.SQLOutput w SQLData.writeSQL () dla Oracle

Wdrożyłemjava.sql.SQLData w celu powiązania obiektów UDT z przygotowanymi instrukcjami za pomocą ojdbc6. Teraz niektóre z moich UDT zawierają tablice. Teraz muszę to zrobić:

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

Aby zbudować tablice Oracle, potrzebuję połączenia JDBC. Zazwyczaj odbywa się to w następujący sposób:

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

Jednak w tymwriteSQL(SQLOutput) metoda, nie mam połączenia. Ponadto z powodów, które trudno wyjaśnić w zwięzłym pytaniu, nie mogę utrzymać odniesienia do połączenia wMyType. Czy mogę jakoś wydobyć to połączenieSQLOutput? Chciałbym uniknąć używania niestabilnych konstrukcji takich jak ta:

// 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);

Jakieś pomysły? Alternatywy?