Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/Resource.java =================================================================== diff -u -r1ee503e3d0e0228ea8a45025fddf15d9623c0377 -rbbd1ae162c29e443f30ef696c36ba958be942272 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/Resource.java (.../Resource.java) (revision 1ee503e3d0e0228ea8a45025fddf15d9623c0377) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/Resource.java (.../Resource.java) (revision bbd1ae162c29e443f30ef696c36ba958be942272) @@ -23,6 +23,7 @@ package org.lamsfoundation.lams.tool.rsrc.model; +import java.io.Serializable; import java.util.Date; import java.util.HashSet; import java.util.Iterator; @@ -55,7 +56,9 @@ */ @Entity @Table(name = "tl_larsrc11_resource") -public class Resource implements Cloneable { +public class Resource implements Cloneable, Serializable { + private static final long serialVersionUID = 6742325835257953475L; + private static final Logger log = Logger.getLogger(Resource.class); @Id @@ -127,7 +130,7 @@ @OneToMany(cascade = CascadeType.ALL) @OrderBy("order_id ASC") - @JoinColumn(name = "tool_content_id") + @JoinColumn(name = "tool_content_id", referencedColumnName = "content_id") private Set ratingCriterias = new HashSet<>(); // *************** NON Persist Fields ******************** Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== diff -u -r2ccad5527dff77d812a2bf4fa8878bea905d7a1f -rbbd1ae162c29e443f30ef696c36ba958be942272 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 2ccad5527dff77d812a2bf4fa8878bea905d7a1f) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision bbd1ae162c29e443f30ef696c36ba958be942272) @@ -801,14 +801,6 @@ // reset it to new toolContentId toolContentObj.setContentId(toolContentId); - Set criterias = toolContentObj.getRatingCriterias(); - if (criterias != null) { - for (LearnerItemRatingCriteria criteria : criterias) { - criteria.setToolContentId(toolContentId); - } - } - - // Calling DAO method below causes flush. That is why we need to reset tool content ID in rating criteria before it happens. ResourceUser user = resourceUserDao.getUserByUserIDAndContentID(newUserUid.longValue(), toolContentId); if (user == null) { user = new ResourceUser(); @@ -829,6 +821,13 @@ useRatings = useRatings || item.isAllowRating(); } + Set criterias = toolContentObj.getRatingCriterias(); + if (criterias != null) { + for (LearnerItemRatingCriteria criteria : criterias) { + criteria.setToolContentId(toolContentId); + } + } + resourceDao.saveObject(toolContentObj); } catch (ImportToolContentException e) { throw new ToolException(e);