@kotsev96

CRUD Hibernate, как сделать последовательный инкремент с обновлением?

Ребята, привет. Делаю простенькое учебное круд приложение. Такая проблема, при удалении столбца, id новой записи начинается с удаленной id, а не с предыдущей. Как сделать так чтобы отсчитывала с предыдущей, не учитывая удаленную запись. И если можно так чтобы при удалении например 9 записи, 10 запись стала 9, т.е. чтобы всегда была последовательность, было бы классно. Дайте плз направление куда копать. Настоящий код в скринах, сейчас при перезапуске приложения, как и должно работать, запись начинается с предыдущей, без перезапуска не работает.5fc0aeacba486596169908.png 5fc0aeb61c45b582479285.png
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@Kot1que
пишу на жаве
Во-первых, не особо понятно зачем это вообще нужно.
Тут не про хибернейт, а про базу данных, которую вы используете.

Первичный ключ должен быть уникальным, в случае автоинкремента еще и последовательным (монотонно строго-возрастающим).

Навскидку так сделать можно: вешаете триггер на удаление и двигаете айдишники строк, обновляете sequence после. Однако это очень тяжелая операция - представьте, что пользователь удалил первую строку, а у вас их миллион, вам придется поменять айдишники миллиона записей.

Более того, если вы где-то в ссылке (например, /movies/123) будете использовать этот айди (а это обычный сценарий), то при удалении все такие ссылки станут уже невалидными.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы