2 Stimmen

Hibernate Inkrement Startnummer

Ich verwende Hibernate, um eine Entität in meiner Datenbank zu persistieren. Für den Moment ist es eine Derby-DB, aber ich werde es über eine Oracle-DB bald verschieben.

in meiner classname.hbm.xml habe ich die id als solche definiert:

<id name="id" type="long">
      <column name="ID"/>
      <generator class="increment"/>
</id>

Wie lege ich den Startwert für die ID fest? Ich möchte, dass sie bei etwas wie 10000 und nicht bei 1 beginnt.

5voto

skaffman Punkte 389758

"Inkrement" ist keine wirklich gute Idee für die ID-Erzeugung.

Wenn Sie zu Oracle wechseln, werden Sie eine Sequenz verwenden, um IDs zu generieren, und die Sequenz wird von Oracle gesteuert, so dass Sie sie mit jedem beliebigen Wert beginnen lassen können.

Unterstützung für Derby Sequenzen ab 10.6, obwohl Sie Hibernate 3.6 benötigen, um es zu Arbeit ..

2voto

Jon Punkte 58858

Ich glaube nicht, dass Sie können, es scheint, dass IncrementGenerator auf der Grundlage des höchsten Primärschlüssels arbeitet, es sei denn, Sie Ihre Primärschlüssel beheben (was ich nicht empfehlen würde) Sie sind mit dieser Funktionalität stecken.

Ich würde eine andere Strategie empfehlen, es ist auch in einem Cluster von Maschinen nicht sicher... Sehen Sie sich die Hibernate-Dokumente und vielleicht die erweiterten Bezeichnergeneratoren an:

http://docs.jboss.org/hibernate/stable/core/reference/en/html/mapping.html#mapping-declaration-id-enhanced

1voto

Ruben Punkte 8898

Generator-Typ Inkrement sucht nach dem maximalen numerischen Primärschlüsselwert in der Tabelle und erhöht ihn um eins.

Generator-Typ einheimische verwendet eine Sequenz, wenn es sich bei der zugrunde liegenden Datenbank um Oracle handelt. Sie können den Wert der Sequenz leicht auf einen beliebigen Startwert erweitern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X