2014-01-27 56 views
0

我正在使用Ecliplink 2.5Derby 10.10.1.1。我想分配主鍵,使其按照上面定義的順序生成。我們可以將JPA中的主鍵分配爲ABC0001,ABC0002,ABC0003 ....等等嗎?

有沒有可能這樣做?

我能夠想到的一種方法是創建一個組合鍵,其中包含一個常量作爲ABC,另一個數字以「0001」開頭(可以在序列生成器中定義)。

但我更傾向於一種方法,我只需要將其定義爲一個整體而不是複合鍵。

+0

沒有使用EclipseLink的經驗,但快速谷歌顯示,自定義生成器不是很難實現(http://wiki.eclipse.org/EclipseLink/Examples/JPA/CustomSequencing)。我會親自帶着「IDENTITY」GeneratedValue和一個插入觸發器來通過程序在derby上產生價值。 – uiron

+1

我認爲您的請求與通用數據庫模式設計原則不一致。一般來說,合成主鍵的全部意義在於它對你的程序沒有任何意義。它唯一的屬性是它唯一地識別你的記錄。如果你需要一個對你的程序有意義的鍵,你應該自己生成這些值。 –

+0

正如Uiron提到的,您將需要使用自定義序列類來追加'ABC'字符串。如果您不想完全處理序列,則可以在自定義序列對象中使用NativeSequence或TableSequence來爲您處理數字序列。 – Chris

回答

0

您可以使用Trigger來實現此目的。在你的derby上寫入一個觸發器,用於在插入前執行的表格(我不知道它在德比中調用了什麼)。在觸發器內部,您可以根據需要從序列或其他表格中獲取001。你也可以用硬編碼自定義ABC,或者使用其他表格(如果你打算使用XYZ,PRQ等)。這只是基本概念,主要的是你可以輕鬆使用Trigger來做到這一點。

相關問題