Я следил за этой проблемой и вроде успешно отправил Collection в базу данных Oracle.
К сожалению, все мои значения String в массиве Struct становятся пустыми при упаковке их из Object в Struct.
Object[] reportArray = new Object[3];
Struct[] struct = new Struct[reports.size()];
int arrayIndex = 0;
for (Report data : reports) {
reportArray[0] = data.getXXX(); //data return String here and it become empty on createStruct
reportArray[1] = data.getYYY();
reportArray[2] = data.getZZZ();
struct[arrayIndex++] = connection.createStruct("R_REPORT_OBJECT", reportArray);
}
Array reportsArray = ((OracleConnection) connection).createOracleArray("T_REPORT_TABLE", struct);
callableStatement.setArray("T_REPORT_IN", reportsArray);
callableStatement.executeUpdate();
Так что если получатель данных (getXXX или getYYY или get ZZZ) возвращает число, тогда все в порядке.
Но если получатель возвращает String, то он отправляется в базу данных как ноль.Я проверил datumArray и data [] bytes пусто.Я вижу, что значение не проходит через createStruct правильно.
Я тестировал его на драйверах 7-12.1.0.2 и 8-12.2.0.1
db - это Oracle 11c или 12c