Поэтому в нашем проекте используется база данных PostgreSQL, и мы используем JPA для работы с базой данных. Мы создали объекты из базы данных с автоматическим создателем в Netbeans 7.1.2.
После небольших изменений наши значения первичного ключа описываются как:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "idwebuser", nullable = false)
private Integer idwebuser;
Проблема заключается в том, что теперь приложение не является гибким, потому что, когда мы напрямую модифицируем базу данных (используя SQL или другой инструмент) вместо перехода через приложение Java - генерируемое значение ниже фактического значения идентификатора базы данных - и поэтому мы получить ошибку во время создания новых объектов.
Возможно ли, что JPA может просто позволить базе данных генерировать идентификатор автоматически, а затем получить его после процесса создания? Или что может быть лучшим решением? Спасибо.
ИЗМЕНИТЬ Более конкретно: У нас есть таблица пользователей, и моя проблема заключается в том, что с использованием любого типа генерации стратегии JPA вставляет новый объект с указанным им идентификатором-генератором. Это неправильно для меня, потому что, если я вношу изменения в таблицу самостоятельно, добавляя новые записи, приложение GeneratedValue для приложения ниже текущего ID - что приводит нас к исключению с дублированным идентификатором. Можем ли мы исправить это?)?
короткая заметка о ответе С моей стороны была небольшая ложь, потому что мы использовали PG Admin → Просмотреть первые 100 строк и отредактировать строки оттуда вместо использования select. В любом случае, оказывается, что этот редактор каким-то образом пропускает процесс обновления идентификатора, и поэтому даже в БД, когда мы пишем правильный INSERT, он ВЫПОЛНИТСЯ с неправильным идентификатором! Таким образом, в основном это проблема редактора, который мы использовали, чем база данных и приложение...
теперь он работает даже с помощью @GeneratedValue(strategy=GenerationType.IDENTITY)