So schreiben Sie eine java.sql.Array in eine java.sql.SQLOutput in SQLData.writeSQL () für Oracle

Ich habe umgesetztjava.sql.SQLData um UDT-Objekte mit ojdbc6 an vorbereitete Anweisungen zu binden. Jetzt enthalten einige meiner UDTs Arrays. Was ich jetzt tun muss, ist Folgendes:

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

Zum Aufbau von Oracle-Arrays benötige ich eine JDBC-Verbindung. In der Regel geschieht dies folgendermaßen:

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

Darin jedochwriteSQL(SQLOutput) Methode, ich habe keine Verbindung. Aus Gründen, die in einer knappen Frage schwer zu erklären sind, kann ich in auch keinen Verbindungsverweis pflegenMyType. Kann ich irgendwie diese Verbindung extrahierenSQLOutput? Ich möchte die Verwendung von instabilen Konstrukten wie folgt vermeiden:

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

Irgendwelche Ideen? Alternativen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage