2009-08-18 9 views
2

Ich verwende Hibernate, um eine Entity in meiner Datenbank zu persistieren. Für den Moment ist es eine Derby-DB, aber ich werde es bald in eine Orakel-DB umziehen.Hibernate-Inkrementierung Startnummer

in meinem classname.hbm.xml habe ich die ID als solche definiert:

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

Wie stelle ich den Startwert für die ID? Ich möchte, dass es bei etwas wie 10000 statt 1 beginnt.

Antwort

2

Ich glaube nicht, Sie können, scheint es, dass IncrementGenerator arbeitet den höchsten Primärschlüssel basiert weg so, wenn Sie beheben Ihre primären Schlüssel (die ich nicht empfehlen würde), sind Sie mit dieser Funktionalität fest.

Würde eine andere Strategie empfiehlt, ist es in einem Cluster von Maschinen nicht sicher entweder ... bei der Dokumentation Hibernate suchen und vielleicht die erweiterten Identifikator-Generatoren:

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

+0

Dieser Link ist tot. – Muhd

5

"Inkrement" ist nicht wirklich eine gute Idee für die ID-Generierung.

Wenn Sie zu Oracle wechseln, verwenden Sie eine Sequenz zum Generieren von IDs, und die Sequenz wird von oracle gesteuert, sodass Sie mit dem von Ihnen gewünschten Wert beginnen können.

Unterstützung Derby sequences als 10,6, obwohl man 3.6 Hibernate muß es work zu bekommen ..

1

Generatortyp Schritt Sucht den maximalen numerischen Primärschlüsselwert in der Tabelle und erhöht ihn um eins.

Generator-Typ native verwendet eine Sequenz, wenn die zugrunde liegende Datenbank Oracle ist. Sie können den Wert der Sequenz leicht auf einen beliebigen Startwert erhöhen.

Verwandte Themen