4 Replies Latest reply on Jul 11, 2008 8:07 PM by pmuir

    Nested conversations: deleted entity passed to persist

      Hi!


      If I try to delete something just created in the previous nested conversation, it crashes with the error deleted entity passed to persist:



      1. Create a long running conversation, create a nested conversation, persist new object, end nested conversation, create second nested conversation, try to delete, crash:

      2. Create a long running conversation, create a nested conversation, persist new object, end nested conversation,end long running conversation,create second long running conversation, create nested conversation, try to delete, success



      The relationship is defined like this:


              @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy = "bien")
           @Label(text="Campos de Bien")
           public Set<ValorCampoBien> getValorCampoBiens() {
                return this.valorCampoBiens;
           }
      



      Here is the stack trace:


      19:10:47,046 INFO  [STDOUT] 19:10:47,046 ERROR ExceptionFilter:69 - exception root cause
      javax.faces.FacesException: #{bienMuebleHomeC.remove}: javax.persistence.EntityNotFoundException: deleted entity passed to persist: [mx.gob.tabasco.sbmi.entity.ValorCampoBien#<null>]
           at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
           at javax.faces.component.UICommand.broadcast(UICommand.java:383)
           at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:184)
           at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:162)
           at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:278)
           at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101)
           at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
           at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
           at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
           at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:80)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:80)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
           at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
           at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
           at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
           at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
           at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
           at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
           at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
           at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
           at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
           at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
           at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
           at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
           at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
           at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
           at java.lang.Thread.run(Unknown Source)
      Caused by: javax.faces.el.EvaluationException: javax.persistence.EntityNotFoundException: deleted entity passed to persist: [mx.gob.tabasco.sbmi.entity.ValorCampoBien#<null>]
           at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
           at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
           ... 49 more
      Caused by: javax.persistence.EntityNotFoundException: deleted entity passed to persist: [mx.gob.tabasco.sbmi.entity.ValorCampoBien#<null>]
           at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:613)
           at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:299)
           at org.jboss.seam.persistence.EntityManagerProxy.flush(EntityManagerProxy.java:90)
           at org.jboss.seam.framework.EntityHome.remove(EntityHome.java:108)
           at mx.gob.tabasco.sbmi.session.inventario.BienMuebleHomeC.remove(BienMuebleHomeC.java:362)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
           at java.lang.reflect.Method.invoke(Unknown Source)
           at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
           at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
           at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
           at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
           at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
           at org.jboss.seam.persistence.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:48)
           at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
           at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
           at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
           at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:38)
           at org.jboss.seam.util.Work.workInTransaction(Work.java:41)
           at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:32)
           at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
           at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
           at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
           at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
           at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
           at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
           at mx.gob.tabasco.sbmi.session.inventario.BienMuebleHomeC_$$_javassist_24.remove(BienMuebleHomeC_$$_javassist_24.java)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
           at java.lang.reflect.Method.invoke(Unknown Source)
           at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:329)
           at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:342)
           at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58)
           at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
           at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
           at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
           at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.jav
      19:10:47,046 INFO  [STDOUT] a:77)
           ... 50 more
      
      



      Regards,

        • 1. Re: Nested conversations: deleted entity passed to persist
          admin.admin.email.tld

          Are you using @In to inject the EntityManager (SMPC) or @PersistenceContext(type=PersistenceContextType.EXTENDED) to inject EntityManger (XPC)?


          When you use SMPC you can set the flushModeType=MANUAL and flush the PC manually in a @End method.


          Post your action classes that are handling the conversation mgmt...

          • 2. Re: Nested conversations: deleted entity passed to persist

            Hi! thanks for answering!



            Arbi Sookazian wrote on Jul 11, 2008 05:40:


            Are you using @In to inject the EntityManager (SMPC) or @PersistenceContext(type=PersistenceContextType.EXTENDED) to inject EntityManger (XPC)?


            I am using @In (My project is a WAR, so I think I cannot use @PersistenceContext.. Am I right? (I don't use EAR because it is just too slow to deploy it, and I see no real advantage on it for my project)





            When you use SMPC you can set the flushModeType=MANUAL and flush the PC manually in a @End method.

            Post your action classes that are handling the conversation mgmt...


            Does that mean that either I must have EAR project to have usable nested conversations?


            Thanks
            Regards,



            • 3. Re: Nested conversations: deleted entity passed to persist

              Hi!


              Mmmm, since I am inheriting from EntityHome... I am actually not using @In or @PersistenceContext am I? Looking at the code in EntityHome base classes it seems to use Component.getInstance(name) to obtain the entityManager...


              It also seems to do the flushing manually (from org.jboss.seam.framework.EntityHome<E>):


                @Transactional
                 public String remove()
                 {
                    getEntityManager().remove( getInstance() );
                    getEntityManager().flush();
                    deletedMessage();
                    raiseAfterTransactionSuccessEvent();
                    return "removed";
                 }
              



              Perhaps the EntityHome is in fact incompatible with WAR projects? (But it shouldn't after all seam-gen uses EntityHome for both EAR and WAR projects)


              Regards,

              • 4. Re: Nested conversations: deleted entity passed to persist
                pmuir

                Try doing it without EntityHome in the loop and see if it works.