我正在使用休眠sequencegenerator爲我的主鍵列自動生成唯一值。示例代碼如下。休眠序列生成非連續值
@Entity
@Table(name = "REQUEST")
@javax.persistence.SequenceGenerator(name = "REQ_SEQ", sequenceName = "REQUEST_SEQ")
public class Request {
/**
* Unique id for this request
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REQ_SEQ")
@Column(name = "REQ_ID")
private long requestId;
//So on
}
一切工作正常,除了生成的值交錯的事實。例如,它插入5000到5015(15個插入)的值,然後第16個插入的值爲5100.然後,對於一些後續插入以及再次出現的問題,它可以正常工作。 我沒有任何問題,只要生成的值是唯一的,但只是想知道什麼可能導致此問題。僅供參考,我正在使用Oracle。
這其實不是hibernate相關的問題,而是一個Oracle數據庫的問題。這一切都取決於你的序列是如何創建的。 – 2010-09-02 06:26:52
你有多確定系統中沒有其他人使用相同的序列? – 2010-09-02 06:29:08
這是一個開發服務器,正在重新開始休息發生的地方?看起來發生器impl是一個hilo,一次在內存中保留100個密鑰。 – Affe 2010-09-02 06:31:14