2014-02-07 25 views
0

我們在我們的Java應用程序中使用TopLink 9.0.3.7。我最近添加了兩個我想保存的新表。我將它與一些能夠正確保存的類似表格進行比較,並且所有內容看起來都是一樣的。我比較了TopLink Mappling WorkBench 9.0.3.5創建的描述符,它們也顯示相同。TopLink不保存

從我們的Action類

submissionDao.transaction(sessionInfo.getClerkReviewSubmission(), 
    new TransactionBlock<ClerkReviewSubmission>() { 
     public void merge(ClerkReviewSubmission detached, 
       ClerkReviewSubmission managed) { 

      ClerkReviewTask task = mergeTask(new ClerkReviewTask(), 
        myForm); 
      for(ClerkReviewCase crCase: sessionInfo.getClerkReviewSubmission().getCases()){ 
       createCaseTask(crCase, task); 
     } 
     } 
    }); 

     private final ClerkReviewCaseTask createCaseTask(ClerkReviewCase crCase, 
       ClerkReviewTask task) { 
      ClerkReviewCaseTask caseTask = new ClerkReviewCaseTask(); 
      caseTask.setClerkReviewCase(crCase); 
      caseTask.setTask(task); 
      crCase.getCaseTasks().add(caseTask); 
      task.getCaseTasks().add(caseTask); 
      return caseTask; 
    } 

從我們BaseDAO類

public T transaction(T detached, TransactionBlock transactionBlock) throws BadDBConnection { 
    Session session = centralSourceInjector.inject(); 
    UnitOfWork uow = session.acquireUnitOfWork(); 

    try { 
     T managed = (T)uow.registerObject((T) detached); 
     transactionBlock.merge(detached, managed); 

     uow.commit(); 
     session.refreshObject(detached); 
     return managed; 
    } catch(OptimisticLockException ole){ 
     uow.rollbackTransaction(); 
     throw ole; 
    } finally { 
     uow.release(); 
    } 
} 

當我調試,我伸進BaseDAO類和所有我在日誌中看到的是:

的UnitOfWork (3889394) - 開始工作單元承諾 ClientSession(5022219) - 連接(7034305) - 開始事務 ClientSession(5022219) - 連接(7034305) - 提交事務 的UnitOfWork(3889394) - 工作的端部提交 的UnitOfWork(3889394) - 工作

任何建議或指導的釋放單元,將不勝感激。

回答

0

一位同事審查我的代碼,並建議我添加一條額外的行,並解決了問題。他建議在我的行動類中做一些小改動:

submissionDao.transaction(sessionInfo.getClerkReviewSubmission(), 
     new TransactionBlock<ClerkReviewSubmission>() { 
      public void merge(ClerkReviewSubmission detached, 
        ClerkReviewSubmission managed) { 
       ClerkReviewTask task = mergeTask(new ClerkReviewTask(), 
         myForm); 
       for (ClerkReviewCase crCase : sessionInfo 
         .getClerkReviewSubmission().getCases()) { 
        ClerkReviewCase crCase2 = managed.findCase(crCase 
          .getIcisCaseId()); 
        createCaseTask(crCase2, task); 
       } 
      } 
     }); 
}