Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java =================================================================== diff -u -r9357467901bacb28df24a695ec35e99434ebbea9 -r4bd901f8cd447f390f2a75bb412bd3777589c687 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision 9357467901bacb28df24a695ec35e99434ebbea9) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision 4bd901f8cd447f390f2a75bb412bd3777589c687) @@ -600,7 +600,7 @@ .setLong("lessonId", lesson.getLessonId()).setParameterList("userIds", userIds).list(); return results; } - + @Override public List getGradebookUserLessons(List lessonIds) { final String GET_GRADEBOOK_LEARNER_LESSONS_BY_LESSON_LIST = "FROM GradebookUserLesson ul WHERE " Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r434d2037869d4af720432ae77ede91c095c1382c -r4bd901f8cd447f390f2a75bb412bd3777589c687 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 434d2037869d4af720432ae77ede91c095c1382c) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 4bd901f8cd447f390f2a75bb412bd3777589c687) @@ -458,8 +458,17 @@ gradebookUserLesson.setLesson(lesson); } - aggregateTotalMarkForLesson(gradebookUserLesson); + // In order to calculate lesson's mark correctly we need to flush the session beforehand. This is required + // as change to gradebookUserActivity isn't synchronized with the DB at this point due to the current transaction isn't + // committed yet + gradebookDAO.flush(); + // Calculates a lesson's total mark and saves it + Double totalMark = gradebookDAO.getGradebookUserActivityMarkSum(gradebookUserLesson.getLesson() + .getLessonId(), gradebookUserLesson.getLearner().getUserId()); + gradebookUserLesson.setMark(totalMark); + gradebookDAO.insertOrUpdate(gradebookUserLesson); + // audit log changed gradebook mark if (isAuditLogRequired) { UserDTO monitorUser = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); @@ -1225,18 +1234,6 @@ } /** - * Adds a mark to the aggregated total and saves it - * - * @param gradebookUserLesson - */ - private void aggregateTotalMarkForLesson(GradebookUserLesson gradebookUserLesson) { - Double totalMark = gradebookDAO.getGradebookUserActivityMarkSum(gradebookUserLesson.getLesson().getLessonId(), - gradebookUserLesson.getLearner().getUserId()); - gradebookUserLesson.setMark(totalMark); - gradebookDAO.insertOrUpdate(gradebookUserLesson); - } - - /** * Gets the GBActivityGridRowDTO fro a given activity and lesson * * @param activity