0
如何使用oracle數據庫和不使用oracle序列的JPA設置和標識auto_increment。如何使用JPA設置id auto_increment而不使用oracle序列
如何使用oracle數據庫和不使用oracle序列的JPA設置和標識auto_increment。如何使用JPA設置id auto_increment而不使用oracle序列
你必須在以下指定的選項: http://docs.oracle.com/javaee/6/api/javax/persistence/GenerationType.html
在我們的應用中使用命名的序列表。當然,您必須創建表格並插入帶有序列標識和序列號(要生成的標識的起點)的記錄。然後,您可以自動增加該值按照下面的文章中列出的指示: http://www.oracle.com/technetwork/middleware/ias/id-generation-083058.html#table
要在該示例工作表通過明確地創建表,你可以做到以下幾點:
create table ${your.schema}.ID_GEN (
ID_NAME varchar2(40),
ID_VAL long
);
Grant…
INSERT INTO ${your.schema}.ID_GEN (ID_NAME, ID_VAL)
VALUES (INV_GEN, 1);
尼爾,謝謝。我知道了。 '@Id @TableGenerator(名稱= 「TABLE_GEN」,表= 「SCHEME.SERVICE_SEQ」,pkColumnName = 「SEQ_NAME」,pkColumnValue = 「TB.ID」,而valueColumnName = 「SEQ_VALUE」,allocationSize = 1) @GeneratedValue (strategy = GenerationType.TABLE,generator =「TABLE_GEN」)' 但現在,我有一個問題。 **在插入對象之前,你知道如何獲得這個序列嗎?在插入到db之前,我需要響應客戶端的這個id。** – Braian
這個id是在EntityManager.flush上生成的。有關檢索ID,請參閱以下文章:https://stackoverflow.com/questions/9732453/jpa-returning-an-auto-generated-id-after-persist。如果你不堅持它們,你不會爲實體生成ID。例如,您可能會從REST調用中檢索數據,將其映射到實體,然後檢查數據庫以確定該實體是否已存在。如果是這樣,並且「新」Entity.equals(existingEntity),你會選擇不堅持「新」實體。你不會想自動生成一個ID。 – neal