2016-07-25 3 views
0

私はループのオブジェクトを保存しようとしていますが、動作していません。まず最初にその行をテーブルに挿入し、すべてのループに対して同じ行が更新されます。HIbernateのループにオブジェクトを保存する方法は?

PFB my code。 getObjectList方法から

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

は、私は、データベースからオブジェクトのリストを取得し、ループ内で反復処理しています。 ConfirmDisposalActionモデルのオブジェクトを保存しようとしたときに、1つの行のみが挿入され、後で同じ行が更新されます。

私にこの問題を解決する方法を教えてください。

は助けを感謝:)

答えて

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(); 
    } 

これは、単一のクエリであなたの仕事を行います。

関連する問題