2017-06-13 351 views

回答

0

你必須在以下指定的選項: 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); 
+0

尼爾,謝謝。我知道了。 '@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

+0

這個id是在EntityManager.flush上生成的。有關檢索ID,請參閱以下文章:https://stackoverflow.com/questions/9732453/jpa-returning-an-auto-generated-id-after-persist。如果你不堅持它們,你不會爲實體生成ID。例如,您可能會從REST調用中檢索數據,將其映射到實體,然後檢查數據庫以確定該實體是否已存在。如果是這樣,並且「新」Entity.equals(existingEntity),你會選擇不堅持「新」實體。你不會想自動生成一個ID。 – neal

相關問題