Для некоторой внутренней логики мы используем 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
Мобильная версия