まず、ここに根底にある問題があります。シーケンスの値を、何かを意味するものとして扱っています。答えの最後を参照してください。
現在、Hibernate では、ユーザーがマッピングをどのように構成しているかによって異なります。適切に構成された Hibernate インスタンスは、他のすべてのものと同じシーケンスを使用します。
残念ながら、ほとんどのマッピングはあまり良くありません。むしろ、Hibernate のデフォルトの動作はひどいものであり、常にオーバーライドする必要があると思います。使用されるデフォルトのシーケンスは、実際にはhibernate_sequence
すべてのテーブルで共有されます。ただし、一部のテーブルで独自のシーケンスを使用し、他のテーブルで shared を使用しhibernate_sequence
たり、すべてのテーブルで独自のシーケンスを適切に使用したりすることは完全に可能です。
決定的な回答を有効にするには、マッピングを投稿する必要があります。
ID 生成を変更したいテーブルが Hibernate マッピングでテーブルの正しいシーケンスを使用している場合は、そのシーケンスに進むことができALTER SEQUENCE
ます。マッピングが JPA 経由である場合、それは@SequenceGenerator
と@GeneratedValue
で行われGenerationType.SEQUENCE
ます。orm.xml
、または古いスタイルの Hibernate アノテーションを使用して行うhbm.xml
場合は、マニュアルを確認する必要があります。または、Hibernate が DB に書き込む唯一のクライアントである場合は、シーケンスを調べて、SELECT * FROM sequence_name
.
対象のテーブルのマッピングが共有hibernate_sequence
を使用している場合、Hibernate マッピングを修正しないと、おそらくやりたいことができないでしょう。マッピングを変更して、対象のテーブルのマッピングが別のシーケンスを使用するように`LOCK TABLE
し、それらのシーケンスの開始点を現在テーブルにある最大の行に設定する必要があります。
シーケンス: シーケンスを変更または再起動する必要があるのはなぜですか? 合成主キーは、他の無意味な数値と等しいかどうかを比較するだけの無意味な数値であるため、問題にはなりません。あなたが解決しようとしている問題は何ですか?