Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy element InitialValue @TableGenerator nie jest obsługiwany w Hibernate JPA?

Pierwsza wartość to 1 zamiast 1001, czyli błąd hibernacji HHH-4228 , ze stanem Nie da się naprawić . Prawidłowa pierwsza wartość w Twoim przypadku to 1001 zamiast 1000, ponieważ initialValue inicjuje kolumnę, która przechowuje ostatni zwrócona wartość (a nie następna wartość do zwrócenia).

Użycie następujących w persistence.xml (jak również sugeruje się w raporcie o błędzie) naprawi problem z pierwszą wartością:

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

Znaczenie allocationSize jest prawdopodobnie źle zrozumiany. To nie jest krok do przyrostu. Oznacza to, ile wartości jest alokowanych w jednym zapytaniu do bazy danych z tabeli. Jest to raczej optymalizacja, aby uniknąć dodatkowego zapytania za każdym razem, gdy potrzebna jest wartość id dla nowej encji.

Produkt poboczny polega na tym, że ponowne uruchomienie aplikacji często powoduje dziury w sekwencji:

  1. wartość początkowa =1000, rozmiar alokacji =100
  2. Użyj wartości 1001 (=> wartość w valueColumn została zaktualizowana do 1100).
  3. zamknij i uruchom aplikację
  4. następna wartość to 1101, a nie 1002.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql vs. MySQL:jak mają się do siebie rozmiary danych?

  2. MySQL - Używanie wyników procedury składowanej do definiowania instrukcji IN

  3. Połącz dwa zapytania MYSQL SELECT

  4. Wstaw plik do mysql Blob

  5. Grupuj SQL według:używając logiki klauzuli where do filtrowania wyników na podstawie funkcji agregujących