Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java,v diff -u -r1.47 -r1.48 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 27 Jun 2014 23:18:18 -0000 1.47 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 4 Jul 2014 20:16:51 -0000 1.48 @@ -483,7 +483,6 @@ questionAnswer = new AssessmentQuestionResult(); questionAnswer.setAssessmentQuestion(question); questionAnswer.setAssessmentResult(assessmentResult); - assessmentResult.getQuestionResults().add(questionAnswer); Set optionAnswers = questionAnswer.getOptionAnswers(); for (AssessmentQuestionOption option : question.getOptions()) { @@ -659,6 +658,13 @@ public AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId) { return assessmentResultDao.getLastFinishedAssessmentResult(assessmentUid, userId); } + + @Override + public AssessmentResult getLastFinishedAssessmentResultNotFromChache(Long assessmentUid, Long userId) { + AssessmentResult result = getLastFinishedAssessmentResult(assessmentUid, userId); + assessmentQuestionDao.evict(result); + return getLastFinishedAssessmentResult(assessmentUid, userId); + } @Override public int getAssessmentResultCount(Long assessmentUid, Long userId) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java,v diff -u -r1.25 -r1.26 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java 1 May 2014 23:27:34 -0000 1.25 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java 4 Jul 2014 20:16:51 -0000 1.26 @@ -211,7 +211,7 @@ AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId); /** - * Return the latest result (only finished ones). + * Return the latest *finished* result. * * @param assessmentUid * @param userId @@ -220,6 +220,16 @@ AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId); /** + * Return the latest *finished* result (the same as the method above). But previously evicting it from the cache. It + * might be useful in cases when we modify result and the use it during one request. + * + * @param assessmentUid + * @param userId + * @return + */ + AssessmentResult getLastFinishedAssessmentResultNotFromChache(Long assessmentUid, Long userId); + + /** * Return number of finished results. I.e. don't count the last not-yet-finished result (it can be autosave one). * * @param assessmentUid Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java,v diff -u -r1.38 -r1.39 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java 30 Apr 2014 22:49:49 -0000 1.38 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java 4 Jul 2014 20:16:51 -0000 1.39 @@ -715,7 +715,8 @@ Assessment assessment = (Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT); Long userId = ((AssessmentUser) sessionMap.get(AssessmentConstants.ATTR_USER)).getUserId(); IAssessmentService service = getAssessmentService(); - AssessmentResult result = service.getLastFinishedAssessmentResult(assessment.getUid(), userId); + //release object from the cache (it's required when we have modified result object in the same request) + AssessmentResult result = service.getLastFinishedAssessmentResultNotFromChache(assessment.getUid(), userId); for (LinkedHashSet questionsForOnePage : pagedQuestions) { for (AssessmentQuestion question : questionsForOnePage) {