sql >> Databáze >  >> RDS >> Mysql

Není prvek initialValue @TableGenerator podporován v Hibernate JPA?

Co se týče první hodnoty, která je 1 místo 1001, to je chyba Hibernate HHH-4228 , se stavem Nebude opraveno . Správná první hodnota ve vašem případě je 1001 místo 1000, protože initialValue inicializuje sloupec, který ukládá poslední vrácená hodnota (a nikoli další hodnota, která má být vrácena).

Použití následujícího v persistence.xml (jak je také navrženo v hlášení o chybě) opraví problém s první hodnotou:

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

Význam allocationSize je pravděpodobně špatně pochopena v otázce. Není to krok ke zvýšení. To znamená, kolik hodnot je přiděleno jednomu databázovému dotazu z tabulky. Toto je spíše optimalizace, aby se předešlo dalšímu dotazu pokaždé, když je pro novou entitu potřeba hodnota id.

Vedlejším produktem je, že restart aplikace způsobuje často díry v sekvenci:

  1. počáteční hodnota =1000, velikost přidělení =100
  2. Použijte hodnotu 1001 (=> hodnota ve sloupci valueColumn se aktualizuje na 1100).
  3. vypnutí a spuštění aplikace
  4. další hodnota bude 1101, nikoli 1002.



  1. Mohu zajistit, aby funkce plpgsql vrátila celé číslo bez použití proměnné?

  2. Změňte typ sloupce z Date na DateTime během migrace ROR

  3. Mohu použít stejné omezení cizího klíče ve dvou různých tabulkách?

  4. Je v Oracle možné VLOŽIT nebo AKTUALIZOVAT záznam prostřednictvím pohledu?