一 為表創建自增長自段有兩種一種是不同的表使用各自的Sequence方法如下
在Oracle sequence首先創建sequence
create sequence seq_idminvalue start with increment by cache
在你的hbmxml中的配置
seq_id
這樣再插入數據的時候Hibernate會自動生成如下語句
hibernate select seq_idnextval from dual hibernate insert into YXJKT_YXJK_WHRYTXL (XM ZW LXDH SJHM DZYJIP ID) values (? ? ? ? ? ? ?)
自動生成下一個序列值然後將對象插入表中在使用的時候需要注意Hibernate對於sequence的主鍵的要求是一定要是shorlong或者integer
二 還有一種方式是使用公共的sequence 這各時候可以不指定表使用的sequence那麼相應的hbmxml中內容是
然後創建公用的 sequence對象命名為 hibernate_sequence
create sequence hibernate_sequence
minvalue
maxvalue
start with
increment by
三 注意事項
如果數據庫是從sqlserver等其他數據庫移植而來的那麼創建sequence時的起始值應該比當前表中最大的ID值大否則會出現錯誤因為sequence 不會維護是否和導庫前現有的值重復
sequence用於Oracle數據庫
序列名
native跨數據庫時使用由底層方言產生
Defaultsequence為hibernate_sequence
注使用native時Hibernate默認會去查找Oracle中的hibernate_sequence序列如果Oracle中沒有該序列連Oracle數據庫時會報錯
From:http://tw.wingwit.com/Article/program/Oracle/201311/16815.html