最初の値が1001ではなく1になると、Hibernateのバグ HHH-4228 、ステータス修正されません 。 initialValue
であるため、この場合の正しい最初の値は1000ではなく1001です。 最後を格納する列を初期化します 返された値(次に返される値ではありません)。
(バグレポートでも提案されているように)persistence.xmlで以下を使用すると、最初の値の問題が修正されます:
<property name="hibernate.id.new_generator_mappings" value="true"/>
allocationSize
の意味 問題は誤解されている可能性があります。インクリメントするステップではありません。これは、テーブルからの1つのデータベースクエリで割り当てられる値の数を意味します。これは、新しいエンティティにid値が必要になるたびに追加のクエリを回避するための最適化です。
副次的な製品として、アプリケーションを再起動すると、シーケンスに穴が開くことがよくあります。
- initialValue =1000、allocationSize =100
- 値1001を使用します(=> valueColumnの値は1100に更新されます)。
- アプリケーションをシャットダウンして開始します
- 次の値は1002ではなく1101になります。