在做Hibernate持久化操作的時候,Hibernate報出could?not synchronize database state with session的錯誤,引起此錯誤的原因眾多
但是緊接著下面報出DB2的錯誤STATE: 23502,在網上查找,此錯誤是因為向數據庫的非空字段插入空值引起的,但是Hibernate沒有報錯呀,仔細檢查了Hibernate映射文件,沒有發現有not-null屬性,用斷點跟蹤,也沒有發現對象有空值出現。
于是,再次來到數據庫查看,突然發現數據庫怎么多出一個字段??
用映射文件對比數據庫,果然,數據庫多出一個字段,而且是非空,由此看來,問題應該就出在這里了,手動映射字段,再次做持久化操作,一切正常!
由此可見,Hibernate捕獲了底層數據庫一場,重新拋出一個Hibernate異常,但是信息不是很完整,還需要根據數據庫提示來進行操作
吃一塹長一智!