java hibernate sqlserver自增_怎样在hibernate中实现oracle的主键自增策略?
Oracle數據庫索引和SQLServer的闡述 Oracle常見表結構 oracle數據庫約束條件刪除、取消、啟用 在很多情況下,我們使用Hibernate在已經建立好數據庫的基礎上。在oracle中,如果已經建立好的數據庫中使用了sequence ,則可以按照下面的步驟把它引入到Hibernate中: 1、在oracle 首先創建sequence create sequence seq_id minvalue 1 start with 1 increment by 1 cache 20; 2。
在你的hbm。xml中的配置
seq_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 根據hibernate的文檔,有兩種方式實現實體對象的主鍵自動增長。 第一種:設置ID的增長策略是sequence,同時指定sequence的名字,最好每個表建一個sequence,此種做法就如同MS-SQL,MY-SQL中的自動增長一樣,不需要創建觸發器,具體的oracle數據庫腳本及hibernate配置文件如下: [1]oracle數據表的創建腳本: Java代碼 1。
CREATE TABLE DEPARTMENT ( 2。 ID NUMBER(19,0) DEFAULT '0' NOT NULL, 3。 NAME VARCHAR2(255) NOT NULL, 4。 DESCRIPTION CLOB 5。
); 6。 ALTER TABLE DEPARTMENT ADD CONSTRAINT PRIMARY_0 PRIMARY KEY(ID) ENABLE; 7。 ALTER TABLE DEPARTMENT ADD CONSTRAINT UK_DEPARTMENT_1 UNIQUE (NAME); 8。
9。 CREATE SEQUENCE DEPARTMENT_ID_SEQ MINVALUE 10000 MAXVALUE 999999999999999999999999 INCREMENT BY 1 NOCYCLE; 復制代碼 創建DEPARTMENT表,并為DEPARTMENT表創建一個單獨的SEQUENCE,名字為SEQUENCE_ID_SEQ,并不需要創建觸發器。
[2]hibernate映射文件的配置: Java代碼 # # # # # # #
DEPARTMENT_ID_SEQ # # #
#
# # 復制代碼 在hibernate映射文件中,對ID的生成策略選擇sequence,指定sequence的名字DEPARTMENT_ID_SEQ就可以了,當你保存新對象的時候,hibernate會自動取得DEPARTMENT_ID_SEQ。
NEXTVAL作為新對象的ID保存到數據庫,所以不需要再使用觸發器再來生成新記錄的ID。
以上是我對于這個問題的解答,希望能夠幫到大家。
全部
總結
以上是生活随笔為你收集整理的java hibernate sqlserver自增_怎样在hibernate中实现oracle的主键自增策略?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 能自己开店的技术行业 其实是有很多的
- 下一篇: 中信银行跨行转账手续费是多少