Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r1e33f64c06430834c80a2b01d42bcdf844c5d958 -r470bccfbbff0b31c242b99313c76456a1bdf1462 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 1e33f64c06430834c80a2b01d42bcdf844c5d958) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 470bccfbbff0b31c242b99313c76456a1bdf1462) @@ -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 =================================================================== diff -u -r495a38a55b249f3b65031de0ac76ecbd9b86ce09 -r470bccfbbff0b31c242b99313c76456a1bdf1462 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 495a38a55b249f3b65031de0ac76ecbd9b86ce09) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 470bccfbbff0b31c242b99313c76456a1bdf1462) @@ -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 =================================================================== diff -u -r2a68a250e3ae88b708a9a2a91e9f3439a4b6d7a9 -r470bccfbbff0b31c242b99313c76456a1bdf1462 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision 2a68a250e3ae88b708a9a2a91e9f3439a4b6d7a9) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision 470bccfbbff0b31c242b99313c76456a1bdf1462) @@ -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) {