Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Attic/Message.hbm.xml,v diff -u -r1.15.10.1 -r1.15.10.2 --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 1 Apr 2010 17:08:30 -0000 1.15.10.1 +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 15 Nov 2010 17:40:30 -0000 1.15.10.2 @@ -189,7 +189,7 @@ name="sessionClones" lazy="false" inverse="false" - cascade="all-delete-orphan" + cascade="none" sort="unsorted" > Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attic/Message.hbm.xml,v diff -u -r1.15.10.1 -r1.15.10.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 1 Apr 2010 17:08:31 -0000 1.15.10.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 15 Nov 2010 17:40:30 -0000 1.15.10.2 @@ -189,7 +189,7 @@ name="sessionClones" lazy="false" inverse="false" - cascade="all-delete-orphan" + cascade="none" sort="unsorted" > Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java,v diff -u -r1.34.8.2 -r1.34.8.3 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java 1 Apr 2010 17:08:31 -0000 1.34.8.2 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java 15 Nov 2010 17:40:30 -0000 1.34.8.3 @@ -497,7 +497,7 @@ /** * @return the set of all messages cloned from this message. See getAuthoredParent(). * - * @hibernate.set cascade="all-delete-orphan" inverse="false" + * @hibernate.set cascade="none" inverse="false" * @hibernate.collection-key column="authored_parent_uid" * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.forum.persistence.Message" * Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java,v diff -u -r1.99.4.3.4.2 -r1.99.4.3.4.3 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 27 Oct 2010 15:18:43 -0000 1.99.4.3.4.2 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 15 Nov 2010 17:40:30 -0000 1.99.4.3.4.3 @@ -300,15 +300,23 @@ } public void deleteTopic(Long topicUid) throws PersistenceException { - List children = messageDao.getChildrenTopics(topicUid); + Message topic = messageDao.getById(topicUid); + // cascade delete children topic by recursive + List children = messageDao.getChildrenTopics(topicUid); if (children != null) { Iterator iter = children.iterator(); while (iter.hasNext()) { Message msg = (Message) iter.next(); this.deleteTopic(msg.getUid()); } } + + // recursively delete clones + for (Message clone : (Set) topic.getSessionClones()) { + this.deleteTopic(clone.getUid()); + } + messageSeqDao.deleteByTopicId(topicUid); messageDao.delete(topicUid); } @@ -709,7 +717,6 @@ } Forum toContent = Forum.newInstance(fromContent, toContentId, forumToolContentHandler); - forumDao.saveOrUpdate(toContent); // save topics in this forum, only save the author created topic!!! and reset its reply number to zero. Set topics = toContent.getMessages(); @@ -730,6 +737,8 @@ createRootTopic(toContent.getUid(), (ForumToolSession) null, msg); } } + + forumDao.saveOrUpdate(toContent); }