2013-03-10 24 views
0

我想問一些關於爲什麼我的<generator class="identity" />在表中生成id而不是最後一次插入+1的問題,但最終插入ID爲5 ,並在保存記錄,然後一個新的ID必須是例如7,所以ID值6被跳過如何強制類ID「indentity」的ID生成器爲SQL中的最後一個插入ID增加

(我需要使用身份沒有增量類由於利用這個「身份」類的爲我的MySQL數據庫)

因爲在我的情況下,我需要主鍵和外鍵相同的ID值,必須等於,但在這種情況下,我得到主鍵7和外鍵也將而不是生成的最後一個ID爲遞增,

兩個類有Hibernate的映射,這種<generator class="identity" /> 我必須使用,以便獲得與「身份」的新紀錄都遞增ID?

+0

應將外鍵設置爲主鍵的值。它們不應該獨立生成,主鍵當然不應該依賴於外鍵的值。這非常奇怪。 – 2013-03-10 15:15:54

回答

2

你必須使用一個主鍵「AUTO_INCREMENT」如創建表:

CREATE TABLE person ( id BIGINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) )

那麼你必須GenerationType.IDENTITY做的工作。

+0

嗯我檢查我的表,都有這些auto_increment,但我注意到,當我使用這GenerationType.IDENTITY,我的最後一個ID是例如7和新的Id將生成例如9(所以不增量和跳過ID值8),然後我刪除此ID,並且當再次保存新ID時,新ID將爲10,因此遞增正在工作,但不能繼續形成最後一個插入ID(從7開始) – ViliDuarte1 2013-03-10 15:42:13