sql >> Databasteknik >  >> RDS >> Mysql

Stöds inte elementet initialValue för @TableGenerator i Hibernate JPA?

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:

  1. initialValue =1000, allocationSize =100
  2. Använd värde 1001 (=> värde i valueColumn uppdateras till 1100).
  3. stäng av och starta programmet
  4. nästa värde blir 1101, inte 1002.



  1. PRIMARY KEY-definition i MySQL CREATE TABLE-satsen

  2. MySQL Välj id från till och exkludera start- och slut-id

  3. Det går inte att lägga till främmande nyckel i MySQL 5.7 (Saknar begränsning i den refererade tabellen)

  4. Att skicka en array från .Net-applikationen till Oracles lagrade procedur