could not fetch initial value for increment generator

在有外鍵關係數據插入的時候出現 could not fetch initial value for increment generator 異常

解決:查看.hbm.xml配置文件發現 id 的 <generator class="increment" />,修改爲<generator class="identity" /> 運行OK!

      爲什麼??? identity - increment

   首先得區別這兩個主鍵生成器的原理:     

         identity:由底層數據庫生成標識符。identity是由數據庫自己生成的,但這個主鍵必須設置爲自增長,

                     前提條件是低層數據庫支持自動 增長字段類型。

         increment:由hibernate管理主鍵,自動以遞增的方式生成標識符,每次增量爲1。其在每次插入前取得一個當前最大的id+1

                     作爲主鍵,該主鍵必須爲Integer類型。

         我個人認爲,因爲數據庫表之間使用了外鍵關係,得需要底層數據庫來維護用戶自定義完整性。。。。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章