2013-04-25 99 views
1

今天我的數據庫負責人老闆告訴我,我在JPA/Hibernate中使用了錯誤的序列,但是我沒有這麼檢查爲什麼我生成的表項有更高的ID比正常(觸發)生成的條目。
而我發現This on SO這對我來說很可怕,因爲我在DB觸發器中使用這個DB序列來生成條目。就我所知,這意味着什麼。在50倍的時間內,我的數據庫將開始擊中由我的Java應用程序生成的序列號。休眠序列,使用特定序列

爲了避免這種情況,我需要使用特定的序列,而不是序列* 50。但沒有發現如何做到這一點,任何人都可以幫助我嗎?

在此先感謝

目前它的定義是這樣的:

@Id 
@Column(name = "PVP_COST_ELEMENTS_ID") 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "wtStatSEQ") 
@SequenceGenerator(name = "wtStatSEQ", sequenceName = "warehouse.wt_stat_SEQ") 

回答

1

在Hibernate中,你可以通過使用註解

@Id 
@Column(name = "COLUMN_NAME", nullable = false) 
@GeneratedValue(strategy = AUTO, generator = "yourEntitySeqGen") 
@SequenceGenerator(name = "yourEntitySeqGen", sequenceName = "SEQUENCE_NAME_IN_YOUR_DATABASE") 

歡呼

+0

更新明確指定所使用的序列Q有點。 所以這是因爲strategy = auto/sequence? :) – 2013-04-29 06:48:15