2010-07-15 60 views
4

我想知道是否有一種乾淨的(或原生的)方式爲表格生成序列,以便將其用作序列號。它需要是連續的(1,2,3 ...等),並避免任何可能的種族/交易問題(如果多個用戶試圖保持相同的時間)。它不需要成爲主鍵。序列號的JPA序列

@Id 
    private Long id; 

    private Long serialNumber; 

謝謝。

回答

2

我不知道是否有一個乾淨的(原生)的方式來生成序列表,使用它作爲一個序列號。

據我所知,不,不適用於非Id字段。

但是,您可以使用具有適當生成器策略的專用實體,並在需要獲取下一個ID時持久保留新實例。

另一種選擇是模擬一個TABLE生成器策略,並使用本機SQL從它讀取下一個ID並增加它。

+0

我想第二個選項是直截了當的,只要事務得到保證(如果許多併發用戶試圖創建相同的實體)。 – bsr 2010-07-15 21:22:11

+0

@bsreekanth:是的,我第二次(這很可能是我實現的)。 – 2010-07-15 21:23:52

+0

正如您在下面評論的那樣,我一直在尋找非id字段的解決方案。舉一個例子,假設我們有2個客戶,並且需要每個客戶的customer_request_id是連續的。例如。 Intel_1,Intel_2 ...,IBM_1,IBM_2 .. – bsr 2010-07-15 21:28:16

1

@id @GeneratedValue(strategy = IDENTITY)?

+0

該OP正在尋找一個非'Id'字段的解決方案。 – 2010-07-15 20:56:50

1

DataNucleus支持在非ID字段中使用@GeneratedValue。

+0

謝謝..這是一個整潔的功能..不幸的是,我使用基於hibernate的系統。 – bsr 2010-07-16 09:10:14