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

L'elemento di initialValue di @TableGenerator non è supportato in Hibernate JPA?

Il primo valore è 1 invece di 1001 che è il bug di ibernazione HHH-4228 , con lo stato Non risolverà . Il primo valore corretto nel tuo caso è 1001 invece di 1000, perché initialValue inizializza la colonna che memorizza ultimo valore restituito (e non il valore successivo da restituire).

L'uso di following in persistence.xml (come suggerito anche nella segnalazione di bug) risolverà il problema con il primo valore:

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

Significato di allocationSize è probabilmente frainteso in questione. Non è un passo per aumentare. Significa quanti valori vengono allocati con una query di database dalla tabella. Questa è piuttosto un'ottimizzazione per evitare query aggiuntive ogni volta che è necessario un valore id per una nuova entità.

Il prodotto collaterale è che il riavvio dell'applicazione causa spesso dei buchi nella sequenza:

  1. initialValue =1000,allocationSize =100
  2. Utilizza il valore 1001 (=> il valore in valueColumn viene aggiornato a 1100).
  3. spegni e avvia l'applicazione
  4. il valore successivo sarà 1101, non 1002.