oracle导出建表主键,oracle主键自动生成 配合hibernate的生成策略详解
hibernate配合oracle自動生成主鍵策略有兩種方法:
A)設置ID的增長策略是sequence,同時指定sequence的名字,最好每個表建一個sequence,此種做法就如同MS-SQL,MY-SQL中的自動增長一樣,不需要創建觸發器,具體的oracle數據庫腳本及hibernate配置文件如下:
1.創建表這里忽略,創建序列語句:
CREATE SEQUENCE TEST_ID_SEQ MINVALUE 10000 MAXVALUE
999999999999999999999999INCREMENT BY 1 NOCYCLE;
這里TEST_ID_SEQ 為序列的名稱,MINVALUE 10000
為序列最小值,MAXVALUE 999999999999999999999999為序列最大值,INCREMENT BY
1序列自增的大小為1。
2.創建實體類并添加getXXX和setXXX方法這里忽略,在getXXX主鍵上添加如下注解
@Id?@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_STORE")
@SequenceGenerator(name="SEQ_STORE",
sequenceName="TEST_ID_SEQ",allocationSize=1)
@GeneratedValue是設置一個生成器,@SequenceGenerator就是設置主鍵自增了.sequenceName屬性中指定數據創建的那個sequence名字.?allocationSize = 1這個是指每次自增1, 不填的話自增值將是隨機的。
如果沒有注解用xml的主鍵配置如下:
DEPARTMENT_ID_SEQ
//id為主鍵名
//precision表示數字中的有效位。如果沒有指定precision的話,Oracle將使用38作為精度。
//scale表示數字小數點右邊的位數,scale默認設置為0. 如果把scale設成負數,Oracle將把該數字取舍到小數點左邊的指定位數。?DEPARTMENT_ID_SE為sequence名稱
最后測試即可。這里每個表都要創建一個序列保證的主鍵的連續性。
B)1.創建表這里忽略,創建序列語句:
CREATE SEQUENCE HIBERNATE_SEQUENCE MINVALUE 90000 MAXVALUE
999999999999999999999999INCREMENT BY 1 NOCYCLE;
2.創建觸發器,創建語句:(后來測試不用創建觸發器也能自動生成id,所以可以不用創建)
CREATE OR REPLACE TRIGGER
NTEST_ID_TRG BEFORE INSERT ON NTEST?FOR EACH ROW
BEGIN IF INSERTING AND :NEW.ID IS NULL THEN SELECT
HIBERNATE_SEQUENCE.CURRVAL INTO :NEW.ID FROM DUAL;END
IF;END;
3.創建實體類并添加getXXX和setXXX方法這里忽略,在getXXX主鍵上添加如下注解:
@Id?@GeneratedValue(generator =
"paymentableGenerator")?@GenericGenerator(name = "paymentableGenerator",
strategy = "native")
如果不用注解,xml的配置方式如下:
最后測試即可。
總結
以上是生活随笔為你收集整理的oracle导出建表主键,oracle主键自动生成 配合hibernate的生成策略详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平安银行信用卡利息怎么算 循环利息你伤不
- 下一篇: 工行信用卡逾期一天影响征信吗 “容时容差