Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java,v diff -u -r1.36.2.7 -r1.36.2.8 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 11 May 2016 07:15:08 -0000 1.36.2.7 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 29 Dec 2016 16:36:50 -0000 1.36.2.8 @@ -368,6 +368,13 @@ } else { Long uid = assessmentPO.getUid(); PropertyUtils.copyProperties(assessmentPO, assessment); + + // copyProperties() above may result in "collection assigned to two objects in a session" exception + // Below we remove reference to one of Assessment objects, + // so maybe there will be just one object in session when save is done + // If this fails, we may have to evict the object from session using DAO + assessmentForm.setAssessment(null); + assessment = null; // set back UID assessmentPO.setUid(uid); @@ -471,7 +478,7 @@ questionForm.setContentFolderID(contentFolderID); questionForm.setDefaultGrade("1"); questionForm.setPenaltyFactor("0"); - questionForm.setAnswerRequired(false); + questionForm.setAnswerRequired(true); List optionList = new ArrayList(); for (int i = 0; i < AssessmentConstants.INITIAL_OPTIONS_NUMBER; i++) { Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java,v diff -u -r1.62.2.2 -r1.62.2.3 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java 11 May 2016 07:35:29 -0000 1.62.2.2 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java 29 Dec 2016 16:36:47 -0000 1.62.2.3 @@ -541,6 +541,13 @@ if (mode.isAuthor()) { Long uid = resourcePO.getUid(); PropertyUtils.copyProperties(resourcePO, resource); + + // copyProperties() above may result in "collection assigned to two objects in a session" exception + // Below we remove reference to one of Assessment objects, + // so maybe there will be just one object in session when save is done + // If this fails, we may have to evict the object from session using DAO + resourceForm.setResource(null); + resource = null; // get back UID resourcePO.setUid(uid); } else { // if it is Teacher, then just update basic tab content