Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wird das Element von initialValue von @TableGenerator in Hibernate JPA nicht unterstützt?

Der erste Wert ist 1 statt 1001, das ist der Hibernate-Bug HHH-4228 , mit dem Status Wird nicht behoben . Der korrekte erste Wert ist in Ihrem Fall 1001 statt 1000, weil initialValue initialisiert Spalte, die last speichert zurückgegebenen Wert (und nicht den nächsten zurückzugebenden Wert).

Die Verwendung des Folgenden in persistence.xml (wie auch im Fehlerbericht vorgeschlagen) behebt das Problem mit dem ersten Wert:

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

Bedeutung von allocationSize wird in Frage wahrscheinlich missverstanden. Es ist kein Schritt zum Erhöhen. Es bedeutet, wie viele Werte mit einer Datenbankabfrage aus der Tabelle zugewiesen werden. Dies ist eher eine Optimierung, um jedes Mal zusätzliche Abfragen zu vermeiden, wenn der ID-Wert für eine neue Entität benötigt wird.

Nebenprodukt ist, dass ein Neustart der Anwendung oft Lücken in der Sequenz verursacht:

  1. initialValue =1000,allocationSize =100
  2. Wert 1001 verwenden (=> Wert in valueColumn wird auf 1100 aktualisiert).
  3. Anwendung herunterfahren und starten
  4. Der nächste Wert ist 1101, nicht 1002.