2014-01-31 82 views
0

我有表Employee與主鍵employee_id在oracle中。 我有一個遺留應用程序將記錄插入到此表中。這個遺留應用程序使用使用本地SQL純JDBC即作爲JPA休眠Oracle - 自動生成主鍵由max + 1

INSERT INTO employee (employe_id, NAME) VALUES ((SELECT MAX (employee_id) + 1 FROM employee), NAME);

現在我正在開發使用JPA + Hibernate的,它具有插入記錄同桌Employee新的應用程序。我堅持如何自動生成主鍵。遺留應用程序和新應用程序都將繼續使用此表,並且我不允許對遺留應用程序代碼進行任何更改。

如果我創建新的數據庫序列並使用它,那麼就有可能與舊應用程序和新應用程序發生衝突。

有沒有辦法告訴JPA使用MAX(employee_id)+1來自動生成主鍵。

+0

這種做法是錯誤的,可以在多用戶環境中無法正常工作。是否有任何商業原因,爲什麼ymu必須重新實施它? – ibre5041

+0

使用序列來獲得獨特的想法。這個max()+ 1方法不會像伊萬傷心那樣工作。 – Christian13467

+0

謝謝@Ivan。我被要求在組件模型中實現它。在用戶認證新應用程序之前,遺留應用程序也將被使用。我最好用DB序列去,也會得到遺留應用程序也使用DB序列。 – Adi

回答

0

我知道這是一個老問題,但只爲記錄: 如果有我目前的最高值 更新到真正大的值留出足夠的空間在未來 「N」取決於多年來沒有其他辦法每天創建多少個條目。 然後將您的序列設置爲差距內的第一個值,並且不要忘記告訴業務部門,這只是一個必須重構的中間解決方案 。

最好的問候, 揚