首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Hibernate + SQL Server 2000 父子關聯級聯保存報錯:SelectMethod=cursor 解決之道

     編輯:Java 相關知識

場景:雙向一對多級聯保存



    
    



測試代碼建立雙向關聯並 session.save(order)。

錯誤訊息

[Microsoft][SQL Server 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.

根因:JDBC 驅動預設 Direct 模式不支援手動事務下多 Statement

  • Hibernate 事務關閉 AutoCommit (手動模式)。
  • 驅動預設 SelectMethod=direct,同一連接無法並發多個 ResultSet/Statement。
  • 級聯保存觸發多條 SQL (父 INSERT、子 INSERT),需同一連接多 Statement,衝突報錯。

解決方案:連接 URL 加 SelectMethod=cursor


    jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=yourdb

cursor 模式支援手動事務下多 Statement 操作。同步修改 hibernate.cfg.xml 與 .hibernateSynchronizer (若用同步工具)。

驗證

修改後重啟應用,級聯保存正常,不再報錯。

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