2014-02-11 1 views
0

Я создавал приложение EJB, которое как функция CRUD для гостиничных номеров. У меня есть 4 строки в базе данных моей комнаты.Autogenerated ids создают промежутки в последовательности после em.remove(), за которой следует em.merge или em.persist

enter image description here

Теперь, если я удалить 4-ю строку (с номером ID 104) с помощью метода em.remove(), а затем добавить новую строку таблица выглядит следующим образом

enter image description here

Зазор создается в идентификаторах с автогенерируемой последовательностью. Есть ли способ избежать этих пробелов при добавлении новых строк?

+0

Это звучит как повторяющийся вопрос http://stackoverflow.com/questions/15312676/how-do-i-reuse-oracle-sequence-gaps-in-primary-key-column – Koitoer

ответ

1

По умолчанию JPA не имеет этой функции, эта проблема больше связана с тем, как управлять базой данных в базе данных, и насколько я знаю, порядковый номер не используется повторно.

Операция Persist создаст новый идентификатор, если объект не имеет его, если вы попытаетесь сохранить отдельный объект, вероятно, вы обнаружите исключение EntityExistsException.

• Если объект является удаленным экземпляром объекта, IllegalArgumentException будет быть брошен операцией слияния (или транзакция будет совершать неудачу).