hibernateでoracle-sequenceを使用する
1.表の自己成長セグメントを作成するには、次の2つの方法があります.
1.Oracle sequenceで最初にsequenceを作成する
2.hbm.xmlでの構成
このようにデータを挿入すると、Hibernateは次の文を自動的に生成します.
次のシーケンス値を自動的に生成し、テーブルにオブジェクトを挿入します.使用するときは、Hibernateのsequenceのプライマリ・キーに対する要求は必ずshor、long、またはintegerであることに注意してください.
もう一つの方法は共通のsequenceを使うことです
この場合、テーブルで使用するsequenceを指定しないことができます.対応するhbm.xmlの内容は次のとおりです.
次に、hibernate_という名前の共通のsequenceオブジェクトを作成します.sequence
三注意事項
データベースがsqlserverなどの他のデータベースから移植された場合、sequenceを作成するときの開始値は、現在のテーブルの最大ID値よりも大きいはずです.そうしないと、sequenceはガイド前の既存の値と重複するかどうかを維持しないため、エラーが発生します.
1、sequence:Oracleデータベース用
2、native:データベース間で使用され、下位方言から生成されます.
注意:nativeを使用する場合、HibernateはデフォルトでOracleのhibernate_を検索します.sequenceシーケンス.Oracleにシーケンスがない場合は、Oracleデータベースに接続しているときにエラーが表示されます.
1.Oracle sequenceで最初にsequenceを作成する
create sequence seq_id
minvalue 1
start with 1
increment by 1
cache 20;
2.hbm.xmlでの構成
<id column="ID0000" name="id" type="integer">
<generator class="sequence">
<param name="sequence">seq_id</param>
</generator>
</id>
このようにデータを挿入すると、Hibernateは次の文を自動的に生成します.
hibernate: select seq_id.nextval from dual
hibernate: insert into YXJK.T_YXJK_WHRYTXL (XM0000, ZW0000, LXDH00, SJHM00, DZYJ00,
IP0000, ID0000) values (?, ?, ?, ?, ?, ?, ?)
次のシーケンス値を自動的に生成し、テーブルにオブジェクトを挿入します.使用するときは、Hibernateのsequenceのプライマリ・キーに対する要求は必ずshor、long、またはintegerであることに注意してください.
もう一つの方法は共通のsequenceを使うことです
この場合、テーブルで使用するsequenceを指定しないことができます.対応するhbm.xmlの内容は次のとおりです.
<id column="ID0000" name="id" type="integer">
<generator class="native">
</generator>
</id>
次に、hibernate_という名前の共通のsequenceオブジェクトを作成します.sequence
create sequence hibernate_sequence
minvalue 0
maxvalue 99999999
start with 10000
increment by 1;
三注意事項
データベースがsqlserverなどの他のデータベースから移植された場合、sequenceを作成するときの開始値は、現在のテーブルの最大ID値よりも大きいはずです.そうしないと、sequenceはガイド前の既存の値と重複するかどうかを維持しないため、エラーが発生します.
1、sequence:Oracleデータベース用
<id name="id" column="id">
<generator class="sequence">
<param name="sequence"> </param>
</generator>
</id>
2、native:データベース間で使用され、下位方言から生成されます.
Default.sequence hibernate_sequence
<id name="id" column="id">
<generator class="native"/>
</id>
注意:nativeを使用する場合、HibernateはデフォルトでOracleのhibernate_を検索します.sequenceシーケンス.Oracleにシーケンスがない場合は、Oracleデータベースに接続しているときにエラーが表示されます.