Pierwsza wartość to 1 zamiast 1001, czyli błąd hibernacji HHH-4228 , ze stanem Nie da się naprawić . Prawidłowa pierwsza wartość w Twoim przypadku to 1001 zamiast 1000, ponieważ initialValue
inicjuje kolumnę, która przechowuje ostatni zwrócona wartość (a nie następna wartość do zwrócenia).
Użycie następujących w persistence.xml (jak również sugeruje się w raporcie o błędzie) naprawi problem z pierwszą wartością:
<property name="hibernate.id.new_generator_mappings" value="true"/>
Znaczenie allocationSize
jest prawdopodobnie źle zrozumiany. To nie jest krok do przyrostu. Oznacza to, ile wartości jest alokowanych w jednym zapytaniu do bazy danych z tabeli. Jest to raczej optymalizacja, aby uniknąć dodatkowego zapytania za każdym razem, gdy potrzebna jest wartość id dla nowej encji.
Produkt poboczny polega na tym, że ponowne uruchomienie aplikacji często powoduje dziury w sekwencji:
- wartość początkowa =1000, rozmiar alokacji =100
- Użyj wartości 1001 (=> wartość w valueColumn została zaktualizowana do 1100).
- zamknij i uruchom aplikację
- następna wartość to 1101, a nie 1002.