#java #mysql #spring #lombok #javax.persistence
#java #mysql #весна #ломбок #jpa
Вопрос:
У меня есть приложение с несколькими объектами, аннотированными с помощью lombok @Data
, и с помощью
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
для идентификатора. В целом все работает нормально. Но мне нужно было вручную вставить строку через MySQL Workbench с id = 635. Это испортило приложение, когда оно попыталось вставить следующую строку, потому что то, что оно считало или вычисляло, будет следующим идентификатором, 635, уже существовавшим. Я думал, что смогу вручную увеличить идентификатор, но я нигде не мог найти его через MySQL workbench.
Итак, где lombok / hibernate / jpa вычисляет или генерирует следующий идентификатор? И есть ли способ вручную изменить его в БД или, по крайней мере, с помощью другого SQL?
Я не уверен, какой фреймворк это делает, поскольку он используется javax.persistence
для аннотаций, но также lombok.Data
, а затем в app.properties, нет набора диалектов, но у меня есть spring.jpa.hibernate.ddl
ключ, поэтому я не уверен, что он также использует биты гибернации.
Комментарии:
1. Это не имеет ничего общего с Lombok и является полностью вашим поставщиком сохраняемости, вероятно, используя последовательность базы данных. Обратите внимание, что обычно это не очень хорошая идея для использования
@Data
с сущностями, поскольку определяющей характеристикой сущностей является то, что они имеют идентификатор, отличный от их значений; используйте@Getter @Setter
вместо этого.
Ответ №1:
Думаю, мне нужно было больше поискать в Google перед публикацией. Нашел этот ответ здесь:
ALTER TABLE table_name AUTO_INCREMENT = 636;