Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Hibernate Orakelsequenz erzeugt große Lücke

Ich denke, dass das Problem von der Tatsache herrührt, dass der Sequenzgenerator nicht wirklich ein Sequenzgenerator ist, sondern ein Sequenz-Hilo-Generator mit einer Standardzuweisungsgröße von 50. wie in der Dokumentation angegeben:http://docs.jboss.org/ hibernate/stable/annotations/reference/en/html_single/#entity-mapping-identifier

Das heißt, wenn der Sequenzwert 5000 beträgt, ist der nächste generierte Wert 5000 * 50 =250000. Fügen Sie den Cache-Wert der Sequenz zur Gleichung hinzu, und dies könnte Ihre große anfängliche Lücke erklären.

Überprüfen Sie den Wert der Sequenz. Er sollte kleiner als der zuletzt generierte Bezeichner sein. Achten Sie darauf, die Sequenz nicht auf diesen zuletzt generierten Wert + 1 neu zu initialisieren, da die generierten Werte exponentiell anwachsen würden (wir hatten dieses Problem und hatten aufgrund eines Überlaufs negative Integer-IDs)