剛剛接觸Hibernate不長時間,今天想動手做一個小例子,數據庫使用的是Oracle。打算使用Oracle中的序列作為表的主鍵,卻不知道使用Hibernate如何與其關聯在一起。請教同事,被告知要使用諸如select語句進行查詢“select sequence.nextval from dual”,暈倒~
終于等到中午,上網去查資料。得解:
1、在oracle 首先創建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 (?, ?, ?, ?, ?, ?, ?)

自動生成下一個序列值,然后將對象插入表中。
這樣問題得解!
PS:
sequence就是采用數據庫提供的sequence機制生成主鍵。如oralce中的Sequence
native就是由hibernate根據數據庫的Dialect,自動采用identity,hilo,sequence的其中一種作為主鍵生成方式