我想使用Java 7在轉換時刻字符串一個唯一的主鍵
特別改造的String(從XML文件)到一個數據庫主鍵,我想確保此值被獨特,正和尊重DB主密鑰規範是:NUMBER(20)。
,我試圖改變這個特性的字符串:
PDR_20140909150001
很明顯,我可以忽略字符串的第一部分(因爲對於所有文件相同),但我必須在int值中變換一個時間戳字符串,如20140909150001
,該值必須是唯一的,並且具有最多20位數的長度。
有什麼想法?我能怎麼做?
我想使用Java 7在轉換時刻字符串一個唯一的主鍵
特別改造的String(從XML文件)到一個數據庫主鍵,我想確保此值被獨特,正和尊重DB主密鑰規範是:NUMBER(20)。
,我試圖改變這個特性的字符串:
PDR_20140909150001
很明顯,我可以忽略字符串的第一部分(因爲對於所有文件相同),但我必須在int值中變換一個時間戳字符串,如20140909150001
,該值必須是唯一的,並且具有最多20位數的長度。
有什麼想法?我能怎麼做?
你可以轉換字符串中使用的Integer.parseInt()來詮釋,我認爲20140909150001足夠獨特。希望這個幫助:)
不幸的是,時間戳不是唯一的,因爲我們的系統與各種子系統連接。所以,我們可以有一個場景,我們的系統從不同的子系統接收相同的時間戳。 – Zany 2014-09-23 10:19:49
這些:getDateTime()在Java中(例如,我得到:20140923172200),將其轉換爲字符串,然後將其附加到20140909150001.最終數據是2014090915000120140923172200。那麼你可以轉換它 – bayuforest 2014-09-23 10:23:17
我遵循你的建議,但我怎麼能將一個24位數字(2014090915000120140923172200)的字符串轉換爲最大值爲20的int值,以保持唯一性? – Zany 2014-09-23 10:52:45
你可以簡單地追加當前系統秒,並將其轉換爲雙倍。
即「PDR_20140909150001」將被轉換爲「2014090915000159」作爲字符串,其中「59」是當前系統的第二秒,將該值轉換爲雙精度值。
我怎麼能轉換25位像2014090915000120140923172200x一個字符串(用「X」是自動生成的ID)中的最大20保留唯一一個int值? – Zany 2014-09-23 10:54:21
@ Zany我建議'BigInteger',因爲上限受系統內存限制,所以它適用於大數字(XX)'。我不同意@ bayuforest的解決方案,因爲我更喜歡附加一個小的自動生成的唯一ID而不是14個dateTime數字;這樣做我不會有「25 - > 20」的問題。順便說一句,我會做@Gyro Gearless。 – taringamberini 2014-09-24 06:56:54
你必須使它成爲20位數的整數? – 2014-09-23 10:13:20
不,它只是一個上限 – Zany 2014-09-23 10:14:44
然後,你可以在Date對象中轉換這個字符串,並在第二秒花費時間,會給你int值。我認爲你的字符串是「PDR_yyyymmddhhmmss」格式 – 2014-09-23 10:16:26