我決定使用滿足以下要求的Hibernate id生成器: - 從不同應用程序(不同JVM)訪問域時的安全ID生成 - 使用ID間隔(不要查詢數據庫中每個需要一個新的ID時間)休眠。增強標識符生成器
一些調查,我選擇的2休眠增強的標識符生成一個之後,它的
org.hibernate.id.enhanced.TableGenerator
問題是,這個算法保留在數據庫中不是下一個可用的值,而是下一個可用區間的末尾,所以,假設我有一個id生成器,其中increment_size爲10,當我爲一個ID請求時,我收到間隔1 - 10,但現在數據庫中存儲的不是值11,而是21.有了這個行爲,我必須沿着映射到特定表的所有類保持increment_size一致。爲什麼會有這種行爲?有沒有什麼辦法解決這一問題 ?
應該只有一個實體映射到特定的表。 –
@JBNizet:在某些情況下,您可以將多個映射/類指向同一個數據庫表,用於繼承等。 –
繼承使用在根實體上定義的生成器,因此這不是真正有效的。一般而言,我認爲人們需要退一步思考*代理*鍵的全部目的。根據定義,這些價值觀應該沒有任何商業意義,那麼你爲什麼在乎呢? –