首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TopLink不储蓄

TopLink不储蓄
EN

Stack Overflow用户
提问于 2014-02-07 15:17:15
回答 1查看 151关注 0票数 0

我们在我们的TopLink应用程序中使用了Java9.0.3.7。我最近添加了两个新的表,我试图保存到。我将其与一些类似的表进行比较,这些表可以正确保存,而且看起来一切都是一样的。我比较了TopLink Mappling WorkBench 9.0.3.5创建的描述符,它们看起来也是一样的。

从我们的行动课上

代码语言:javascript
复制
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课程

代码语言:javascript
复制
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类,我在日志中看到的全部内容是:

开始工作单元提交ClientSession(5022219)--Connection(7034305)--begin事务ClientSession(5022219)--Connection(7034305)--commit事务处理UnitOfWork(3889394)--最终工作单元提交UnitOfWork(3889394)-释放工作单元

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-11 20:06:28

一位同事审阅了我的代码,建议我再增加一行,这样就解决了问题。他建议在我的动作课上做一个小小的改变:

代码语言:javascript
复制
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);
                }
            }
        });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21631333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档