Отрицательные значения для автоматически сгенерированных ключей, возвращаемых Oracle DB 19cJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Отрицательные значения для автоматически сгенерированных ключей, возвращаемых Oracle DB 19c

Сообщение Anonymous »

Мы используем столбец IDENTITY в базе данных Oracle (19c) в качестве первичного ключа нашей таблицы.
Для некоторой внутренней логики мы используем getAutoGeneratedKeys() для получения идентификаторов созданных сущностей. Но идентификаторы, возвращаемые в наборе результатов, имеют некоторые расхождения.
Ниже приведен код для получения автоматически сгенерированных ключей.

Код: Выделить всё

String keyCols[] = {"ID"};
ps = connection.prepareStatement(queryToInsertEntity, keyCols);
ps.executeBatch();
resultSet = ps.getGeneratedKeys();
while (resultSet.next()) {
logger.trace("Entity ID:{}", resultSet.getBigDecimal(1));
}
Например, для нескольких объектов идентификатор, возвращаемый набором результатов, выглядит примерно так (с отрицательными значениями):
Идентификатор объекта: -4.3692522E-31
И для нескольких объектов возвращаемый идентификатор выглядит следующим образом:

Идентификатор объекта: 1591017024
Итак, возникает вопрос, почему resultSet.getBigDecimal() возвращает разные значения в разное время. Объект никогда не может иметь отрицательный идентификатор, поскольку минимальное значение столбца Identity равно 1.
Это где-то связано с методом getAutoGeneratedKeys()?

Подробнее здесь: https://stackoverflow.com/questions/670 ... cle-db-19c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»