在有外鍵關係數據插入的時候出現 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類型。
我個人認爲,因爲數據庫表之間使用了外鍵關係,得需要底層數據庫來維護用戶自定義完整性。。。。。