База данных не вернула значение сгенерированного идентификатора - PullRequest
2 голосов
/ 14 ноября 2011

Я использую IBM DB2 V 9.1.0.356.Я использую драйвер DB2 JDBC версии 9.7.

Я использую эти технологии для своего приложения.

Spring MVC, Hibernate, DB2, Websphere

В моем скрипте Create Table;Столбец идентификатора генерируется как:

ID BIGINT GENERATED BY DEFAULT AS IDENTITY

В классе Java Entity он настраивается следующим образом:

@Id 
@GeneratedValue(strategy = GenerationType.AUTO)
@Column( name = "id", nullable = false  )

Когда я сохраняю объект и вызываю его, вызывая его через hibernate:

*.save(persistentObject);

Данные сохранены.Но я получил следующее исключение:

org.hibernate.HibernateException: The database returned no natively generated identity value
at org.hibernate.id.IdentifierGeneratorFactory.getGeneratedIdentity(IdentifierGeneratorFactory.java:90)

Примечание: Мое приложение настроено на двух серверах на разных машинах.С одной машины я могу успешно сохранять данные;но от других я получил вышеупомянутое исключение.

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Тот факт, что это работает на одном сервере WebSphere и не работает на другом, хотя они оба подключаются к одной и той же базе данных, указывает на наличие проблемы с версией драйвера JDBC.Я бы проверил это первым.

0 голосов
/ 23 февраля 2017

Убедитесь, что при создании таблицы идентификатор поля должно быть помечено как автоинкремент, а затем используйте

@GeneratedValue(strategy = GenerationType.IDENTITY)
0 голосов
/ 01 августа 2013

Вышеуказанное исключение также может возникнуть, если аннотированное свойство @id сопоставило столбец дозировка не поддерживает автоматическую генерацию идентификатора.

т.е.

@GeneratedValue(strategy = GenerationType.AUTO)

с помощью

Use @GeneratedValue(strategy = GenerationType.IDENTITY)

может решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...