2016-07-25 36 views
0

我想保存對象我循環但它不工作,最初它插入表中的行,然後相同的行更新爲每個循環。如何將對象保存在HIbernate的Loop中?

PFB我的代碼。

@Override 
    public void saveConfirmDisposalAction(ConfirmDisposalAction confirmDisposal, List<Long> objectIDList) { 
     for(ObjectCommon objectCommon : getObjectList(objectIDList)){ 
      confirmDisposal.setObjectId(objectCommon); 
      confirmDisposal.setStorageLocation(objectCommon.getStorageLocation()); 
      objectActionService.saveObjectAction(confirmDisposal); 
     } 
    } 

from getObjectList方法,我從數據庫中獲取對象列表並在循環中迭代。 當我試圖保存ConfirmDisposalAction模型的對象時,只有一行插入,同一行將稍後更新。

請讓我知道,我該如何解決這個問題?

欣賞的幫助:)

回答

0

你應該不是每一個對象保存在循環中,嘗試使用批處理。

Session session = sessionFactory.openSession(); 
    Transaction transaction = session.beginTransaction(); 
    try { 
     session.doWork(new Work() { 
      public void execute(Connection connection) throws SQLException { 
       Statement statement = connection.createStatement(); 
       for (Object obj : list) { 
        String str = ""; 
        statement.addBatch(str); 
        statement.executeBatch(); 
      } 
     }); 
    } catch (Exception ex) { 
     SystemUtils.logException(ex); 
     LOGGER.warn("Error ", ex); 
    } finally { 
     session.flush(); 
     transaction.commit(); 
     session.close(); 
    } 

這將在單個查詢中完成您的工作。

相關問題