sql >> Database teknologi >  >> RDS >> Mysql

Er elementet initialValue af @TableGenerator ikke understøttet i Hibernate JPA?

Hvad det kommer til, at den første værdi er 1 i stedet for 1001, det er Hibernate bug HHH-4228 , med status Løser ikke . Den korrekte første værdi i dit tilfælde er 1001 i stedet for 1000, fordi initialValue initialiserer kolonne, der gemmer sidste værdi returneret (og ikke den næste værdi, der skal returneres).

Brug af følgende i persistence.xml (som også foreslået i fejlrapporten) vil løse problemet med første værdi:

<property name="hibernate.id.new_generator_mappings" value="true"/>

Betydning af allocationSize er sandsynligvis misforstået i spørgsmålet. Det er ikke et skridt til at stige. Det betyder, hvor mange værdier der er tildelt med en databaseforespørgsel fra tabellen. Dette er snarere optimering for at undgå yderligere forespørgsler hver gang, når id-værdi er nødvendig for en ny enhed.

Sideprodukt er, at genstart af applikation ofte forårsager huller i rækkefølgen:

  1. initialValue =1000,allokeringsstørrelse =100
  2. Brug værdi 1001 (=> værdi i valueColumn er opdateret til 1100).
  3. luk og start applikationen
  4. Næste værdi vil være 1101, ikke 1002.



  1. SQL-fejl #1071 - Den angivne nøgle var for lang; max nøglelængde er 767 bytes

  2. ImportError:Intet modul med navnet flask.ext.mysql

  3. eliminering af regulære udtryk specialtegn

  4. Sådan laver du innodb som standardmotor