Какво става с това, че първата стойност е 1 вместо 1001, това е грешка в Hibernate HHH-4228 , със състояние Няма да се коригира . Правилната първа стойност във вашия случай е 1001 вместо 1000, защото initialValue
инициализира колона, която съхранява последно върната стойност (а не следващата стойност, която трябва да бъде върната).
Използването на следното в persistence.xml (както също е предложено в доклада за грешка) ще коригира проблема с първата стойност:
<property name="hibernate.id.new_generator_mappings" value="true"/>
Значение на allocationSize
вероятно е погрешно разбран въпросът. Не е стъпка към нарастване. Това означава колко стойности се разпределят с една заявка към базата данни от таблицата. Това е по-скоро оптимизация, за да се избегне допълнителна заявка всеки път, когато е необходима id стойност за нов обект.
Страничен продукт е, че рестартирането на приложението често причинява дупки в последователността:
- initialValue =1000,allocationSize =100
- Използвайте стойност 1001 (=> стойността във valueColumn се актуализира до 1100).
- изключване и стартиране на приложението
- следващата стойност ще бъде 1101, а не 1002.