2

休止状態を使用してエンティティをデータベースに永続化しています。現時点ではダービー DB ですが、すぐにオラクル DB に移行する予定です。

私のclassname.hbm.xmlには、次のように定義されたIDがあります。

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

ID の開始値を設定するにはどうすればよいですか? 1 ではなく 10000 くらいから始めたいと思います。

4

3 に答える 3

5

「インクリメント」は、ID 生成にはあまり適していません。

Oracle に移行する場合は、シーケンスを使用して ID を生成します。シーケンスはオラクルによって制御されるため、任意の値から開始できます。

Derbyは 10.6 以降のシーケンスをサポートしていますが、動作させるには Hibernate 3.6 が必要です。

于 2009-08-18T22:16:23.987 に答える
2

IncrementGenerator は最高の主キーに基づいて動作するように見えるので、主キーを修正しない限り (これはお勧めしません)、その機能に固執します。

別の戦略をお勧めしますが、マシンのクラスターでも安全ではありません...Hibernateのドキュメントと、おそらく拡張された識別子ジェネレーターを見てください。

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

于 2009-08-18T22:18:25.980 に答える
1

ジェネレータ タイプのインクリメントは、テーブル内の主キーの数値の最大値を検索し、それを 1 ずつ増やします。

ジェネレータ タイプネイティブは、使用される基礎となるデータベースが Oracle の場合にシーケンスを使用します。シーケンスの値を任意の開始値に簡単に増やすことができます。

于 2009-08-18T22:20:00.547 に答える