Det första värdet är 1 istället för 1001 som är Hibernate bug HHH-4228 , med statusen Kommer inte att åtgärda . Rätt första värde i ditt fall är 1001 istället för 1000, eftersom initialValue
initierar kolumn som lagrar senaste värde returneras (och inte nästa värde som ska returneras).
Att använda följande i persistence.xml (som också föreslås i felrapporten) kommer att fixa problemet med det första värdet:
<property name="hibernate.id.new_generator_mappings" value="true"/>
Betydelse av allocationSize
är sannolikt missförstådd i fråga. Det är inte steget att öka. Det betyder hur många värden som tilldelas med en databasfråga från tabellen. Detta är snarare optimering för att undvika ytterligare frågor varje gång när id-värde behövs för en ny enhet.
Biprodukt är att omstart av applikation ofta orsakar hål i sekvensen:
- initialValue =1000, allocationSize =100
- Använd värde 1001 (=> värde i valueColumn uppdateras till 1100).
- stäng av och starta programmet
- nästa värde blir 1101, inte 1002.