我想知道是否有一種乾淨的(或原生的)方式爲表格生成序列,以便將其用作序列號。它需要是連續的(1,2,3 ...等),並避免任何可能的種族/交易問題(如果多個用戶試圖保持相同的時間)。它不需要成爲主鍵。序列號的JPA序列
@Id
private Long id;
private Long serialNumber;
謝謝。
我想知道是否有一種乾淨的(或原生的)方式爲表格生成序列,以便將其用作序列號。它需要是連續的(1,2,3 ...等),並避免任何可能的種族/交易問題(如果多個用戶試圖保持相同的時間)。它不需要成爲主鍵。序列號的JPA序列
@Id
private Long id;
private Long serialNumber;
謝謝。
我不知道是否有一個乾淨的(原生)的方式來生成序列表,使用它作爲一個序列號。
據我所知,不,不適用於非Id
字段。
但是,您可以使用具有適當生成器策略的專用實體,並在需要獲取下一個ID時持久保留新實例。
另一種選擇是模擬一個TABLE生成器策略,並使用本機SQL從它讀取下一個ID並增加它。
@id @GeneratedValue(strategy = IDENTITY)?
該OP正在尋找一個非'Id'字段的解決方案。 – 2010-07-15 20:56:50
@SequenceGenerator
http://wiki.eclipse.org/EclipseLink/Examples/JPA/PrimaryKey#Using_Sequence_Objects
該OP正在尋找一個非'Id'字段的解決方案。 – 2010-07-15 20:56:10
DataNucleus支持在非ID字段中使用@GeneratedValue。
謝謝..這是一個整潔的功能..不幸的是,我使用基於hibernate的系統。 – bsr 2010-07-16 09:10:14
我想第二個選項是直截了當的,只要事務得到保證(如果許多併發用戶試圖創建相同的實體)。 – bsr 2010-07-15 21:22:11
@bsreekanth:是的,我第二次(這很可能是我實現的)。 – 2010-07-15 21:23:52
正如您在下面評論的那樣,我一直在尋找非id字段的解決方案。舉一個例子,假設我們有2個客戶,並且需要每個客戶的customer_request_id是連續的。例如。 Intel_1,Intel_2 ...,IBM_1,IBM_2 .. – bsr 2010-07-15 21:28:16