亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在休眠中批量插入

在休眠中批量插入

qq_遁去的一_1 2021-08-19 16:04:09
我正在嘗試在數據庫表中上傳 Excel 工作表。我正在將 excel 行轉換為休眠實體并嘗試將其保存在數據庫中。為了實現這一點,我面臨著問題。很少有數據庫約束,如唯一鍵或復合鍵等,但用戶可以上傳任何工作表。因此,如果特定行未能插入,那么我的要求是應繼續其他行。并且交易應該被保存。`Session session=localSessionFactoryBean.getObject().openSession();        Transaction tx = session.beginTransaction();fot(i=0;i<list.size();i++){Long Id = (Long) session.save(list.get(i));if (i % 50 == 0) {                    session.flush();                    session.clear();                }}tx.commit();session.close();` 此處如果單行失敗,則所有行都失敗。我收到 org.hibernate.AssertionFailure: null id (在異常發生后不刷新會話) 異常。請幫忙批量上傳。
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

Hibernate 不允許在發生異常后刷新會話(您應該don't flush the Session after an exception occurs在堆棧跟蹤中看到消息),因此繼續的方法可以是:

將您list分成 50 個元素的塊,并嘗試將每個塊保存在單個事務中:

  • 如果一切順利,只需提交并繼續下一個塊。

  • 如果發生錯誤,回滾事務并重新啟動塊,但將失敗塊的每個元素保存在專用事務中


查看完整回答
反對 回復 2021-08-19
  • 2 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號