拓联未保存

  • 本文关键字:保存 toplink
  • 更新时间 :
  • 英文 :


我们在Java应用程序中使用TopLink 9.0.3.7。 我最近添加了两个我正在尝试保存到的新表。 我正在将其与一些正确保存的类似表进行比较,并且一切似乎都相同。 我已经比较了由TopLink Mappling WorkBench 9.0.3.5创建的描述符,它们看起来也是一样的。

从我们的行动课

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

来自我们的基础DAO类

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 类,我在日志中看到的所有内容是:

工作单元(3889394)--开始工作单元提交客户端会话(5022219)--连接(7034305)--开始事务客户端会话(5022219)--连接(7034305)--提交事务工作单元(3889394)--结束工作单元提交工作单元(3889394)--发布工作单元

任何建议或指导将不胜感激。

一位同事审查了我的代码,并建议我添加一行额外的行,它解决了问题。 他建议在我的行动课上做一个小改动:

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

相关内容

  • 没有找到相关文章

最新更新