У меня есть база данных с существующими данными, где ранее я использовал AUTO_INCREMENT на БД для генерации PK.
Чтобы повысить производительность и упростить массовые вставки, я пытаюсь представить другую стратегию генерации ключей:
public class BaseEntity implements Serializable {
@Id
@GeneratedValue(generator="generator")
@GenericGenerator(
name="generator", strategy="hilo")
private Integer id;
Мне трудно найти документацию по синтаксису @GenericGenerator
, поэтому я не уверен, правильно ли я ее реализовал. Насколько я понимаю, этот генератор генерирует PK для сущности, предшествующей выполнению INSERT, что исключает необходимость запроса после вставки для обнаружения pk.
Однако это приводит к исключению org.hibernate.NonUniqueObjectException
при попытке сделать INSERT - предположительно, потому что значения, которые hibernate пытается использовать для PK, уже приняты.
Правильно ли мое понимание здесь, и - если это так - как настроить Hibernate для чтения соответствующих таблиц при запуске и выбора нижних границ PK?