connection.createStruct делает строки пустыми - PullRequest
0 голосов
/ 25 марта 2019

Я следил за этой проблемой и вроде успешно отправил 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

1 Ответ

0 голосов
/ 26 марта 2019

Решено добавлением зависимости orai18n

<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>orai18n</artifactId>
  <version>${oracle.jdbc.version}</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...