我將使用身份生成器的類轉換爲使用hilo的類。我還使用一個單一的表,不同的行每實體:將Identity列生成器轉換爲hilo:應該將「next_hi」初始化爲什麼?
EntityId (table)
- EntityName
- NextHigh
舊錶:
Patients (table)
- Id (identity)
新表:
PatientRecord (table)
- Id
爲了保持數據的完整性,我只是用現有患者。如新病患記錄.Id:
insert into PatientRecord (Id)
select Id from Patients
並創建一個EntityId
條目:
insert into EntityId values ('PatientRecord', ??)
其中??
是下一個喜價值。我應該在這裏使用什麼價值?默認情況下,初始化列將是1.我只是使用它,還是應該使用類似select MAX(Id) from PatientRecord
的東西?
3.3或更高版本,您還可以使用「增強型ID生成器」wi第一個「合併」優化器,用於生成器存儲值和下一個可用標識符之間更直接的映射。 –
@OskarBerggren感謝您的建議。您能否指出任何有關彙集的增強型ID生成器的體面文檔? – HackedByChinese
它的工作原理與Hibernate一樣:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-id-enhanced您也可以在NHibernate.Test源代碼:https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate.Test/IdGen/Enhanced/你會選擇基於數據庫結構的表或序列(但序列將恢復如果需要的話),然後根據你想要處理的內容選擇優化器。 「混合LO」是最接近「自然人理解」的IMHO。 –