Как запустить autoIncrement с 0 вместо 1 с помощью Hibernate? - PullRequest
0 голосов
/ 22 апреля 2020

Пожалуйста, помогите. У меня есть таблица, которая использует значения внешнего ключа, начиная с 0. Когда я пытаюсь сгенерировать сущности, используя hibernate, она всегда запускает автоинкремент с 1. Есть ли способ заставить его начинаться с 0?
Мой первичный ключ hibernate в настоящее время установлен до этого пути:

@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
Long id;

Ответы [ 2 ]

1 голос
/ 22 апреля 2020
SET [GLOBAL|SESSION] sql_mode='NO_AUTO_VALUE_ON_ZERO'

NO_AUTO_VALUE_ON_ZERO влияет на обработку столбцов AUTO_INCREMENT. Обычно вы генерируете следующий порядковый номер для столбца, вставляя в него либо NULL, либо 0. NO_AUTO_VALUE_ON_ZERO подавляет это поведение для 0, так что только NULL генерирует следующий порядковый номер.

Этот режим может быть полезен, если в столбце AUTO_INCREMENT таблицы хранится 0. (Кстати, хранение 0 не рекомендуется).

Ссылка

Ссылка 2

0 голосов
/ 22 апреля 2020

Я согласен с Саймоном. 0 не является хорошим значением для первичного ключа. Кроме того, насколько я знаю, не будет никакого способа настроить Hibernate, чтобы сделать это плохой практикой. Но если вы действительно хотите придерживаться начала с нуля, вы можете удалить автоинкремент и сделать: SELECT MAX(column_name) FROM table_name; И обойти его. Но, по моему мнению, как разработчик, 0 - это хорошее значение при работе с массивами и т. Д., Но PK всегда должен начинаться с 1.

...