hibernateでoracle-sequenceを使用する


1.表の自己成長セグメントを作成するには、次の2つの方法があります.
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データベースに接続しているときにエラーが表示されます.