@kotsev96

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
Эвотор Москва
от 180 000 до 250 000 ₽
от 170 000 до 210 000 ₽
от 150 000 до 200 000 ₽
28 янв. 2021, в 04:36
5000 руб./в час
28 янв. 2021, в 03:43
2000 руб./за проект
28 янв. 2021, в 02:42
120000 руб./в час