Using taskInstance.addComment() breaks Hibernate mappings fo
brittm Jul 18, 2005 6:34 PMI've observed that adding a task comment breaks jbpm3's ability to add or retrieve token comments as well as its ability to delete process instances. After adding a task comment, attempting to delete the process instance results in the following:
java.lang.RuntimeException: couldn't delete process instance '1424' at org.jbpm.db.GraphSession.deleteProcessInstance(GraphSession.java:315) at org.jbpm.db.GraphSession.deleteProcessInstance(GraphSession.java:286) at org.apache.jsp.admin.instance_jsp._jspService(org.apache.jsp.admin.instance_jsp:130) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:534) Caused by: org.hibernate.HibernateException: null index column for collection: org.jbpm.graph.exe.Token.comments at org.hibernate.persister.collection.AbstractCollectionPersister.readIndex(AbstractCollectionPersister.java:618) at org.hibernate.collection.PersistentList.readFrom(PersistentList.java:297) at org.hibernate.loader.Loader.readCollectionElement(Loader.java:645) at org.hibernate.loader.Loader.readCollectionElements(Loader.java:355) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:306) at org.hibernate.loader.Loader.doQuery(Loader.java:395) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:210) at org.hibernate.loader.Loader.loadCollection(Loader.java:1400) at org.hibernate.loader.collection.OneToManyLoader.initialize(OneToManyLoader.java:107) at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:483) at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60) at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1412) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:171) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:48) at org.hibernate.collection.PersistentList.iterator(PersistentList.java:105) at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:193) at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:185) at org.hibernate.engine.Cascades.getAllElementsIterator(Cascades.java:939) at org.hibernate.engine.Cascades.access$100(Cascades.java:32) at org.hibernate.engine.Cascades$1.getCascadableChildrenIterator(Cascades.java:71) at org.hibernate.engine.Cascades.cascadeCollection(Cascades.java:858) at org.hibernate.engine.Cascades.cascade(Cascades.java:739) at org.hibernate.engine.Cascades.cascade(Cascades.java:817) at org.hibernate.engine.Cascades.cascade(Cascades.java:789) at org.hibernate.event.def.DefaultDeleteEventListener.cascadeBeforeDelete(DefaultDeleteEventListener.java:248) at org.hibernate.event.def.DefaultDeleteEventListener.deleteEntity(DefaultDeleteEventListener.java:201) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:109) at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:573) at org.hibernate.engine.Cascades$1.cascade(Cascades.java:67) at org.hibernate.engine.Cascades.cascade(Cascades.java:721) at org.hibernate.engine.Cascades.cascade(Cascades.java:817) at org.hibernate.engine.Cascades.cascade(Cascades.java:789) at org.hibernate.event.def.DefaultDeleteEventListener.cascadeAfterDelete(DefaultDeleteEventListener.java:272) at org.hibernate.event.def.DefaultDeleteEventListener.deleteEntity(DefaultDeleteEventListener.java:228) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:109) at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:565) at org.jbpm.db.GraphSession.deleteProcessInstance(GraphSession.java:310) ... 28 more
Errors identical to this 'caused by' error are thrown when attempting to add or retreive token comments. The database record for the inserted task comment has a tokenindex_ of null. Apparently Hibernate thinks these Task comments are Token comments and isn't expecting the null tokenindex_. I'm not sure of the original intent of the relationship between Task/Token comments, so I'll leave the solution up to someone who knows better.
Thanks,
Britt