首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Hibernate 級聯保存報錯:實體關聯配置 cascade="save-update" 但關聯對象未持久化,需檢查 inverse、unsaved-value、session 狀態

     編輯:程式設計綜合問答

錯誤截圖提示級聯保存失敗。常見原因:

原因檢查點修正
關聯端未保存`cascade="save-update"` 但關聯對象是 transient(無 ID)先手動 `session.save(child)` 或改 `cascade="persist"` (JPA)
`inverse="true"` 導致雙向關聯只由一方維護雙向一對多 `` 但另一端未設置關聯雙向必須雙邊設置:`parent.getChildren().add(child); child.setParent(parent);`
`unsaved-value` 誤判ID 生成策略為 assigned 但未設置 unsaved-value="0"/"null"映射文件 ``
Session 已關閉/不同 Session級聯操作跨越事務邊界確保整個對象圖在同一 Session/事務中

調試步驟

  1. 開啟 Hibernate SQL 日誌:`log4j.logger.org.hibernate.SQL=DEBUG`。
  2. 觀察發出的 `INSERT` 順序,父表先插還是子表先插。
  3. 對照映射文件 `` 檢查屬性組合。

參考鏈接

CSDN 經典排查貼:`https://blog.csdn.net/huangbiao86/article/details/6581014`

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved