title: Failed to lazily initialize a collection, no session or session was closed (despite eagerly fetching)
body: <p>Okay, I get the above exception in an application I'm working on. I am using JPA and hibernate. Here is the stacktrace: </p>
  
  <pre><code>WARNING: #{commissionController.saveCommission}: javax.persistence.PersistenceException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
  javax.faces.FacesException: #{commissionController.saveCommission}: javax.persistence.PersistenceException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
      at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
      at org.apache.myfaces.extensions.cdi.jsf.impl.security.SecurityViolationAwareActionListener.processAction(SecurityViolationAwareActionListener.java:56)
      at org.apache.myfaces.extensions.cdi.jsf.impl.config.view.ViewControllerActionListener.processAction(ViewControllerActionListener.java:68)
      at org.apache.myfaces.extensions.cdi.jsf.impl.listener.action.CodiActionListener.processAction(CodiActionListener.java:58)
      at javax.faces.component.UICommand.broadcast(UICommand.java:315)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      at org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.execute(CodiLifecycleWrapper.java:95)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:722)
  Caused by: javax.faces.el.EvaluationException: javax.persistence.PersistenceException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
      at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
      at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
      ... 27 more
  Caused by: javax.persistence.PersistenceException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1377)
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1300)
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1306)
      at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:888)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:45)
      at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105)
      at org.jboss.weld.proxies.EntityManager$1148094400$Proxy$_$$_WeldClientProxy.merge(EntityManager$1148094400$Proxy$_$$_WeldClientProxy.java)
      at se.raindance.persistence.RaindanceBaseHomeImpl.update(RaindanceBaseHomeImpl.java:57)
      at se.raindance.purchasecommission.home.CommissionHome.update(CommissionHome.java:59)
      at se.raindance.purchasecommission.home.CommissionHome$Proxy$_$$_WeldSubclass.update(CommissionHome$Proxy$_$$_WeldSubclass.java)
      at se.raindance.persistence.RaindanceBaseHomeImpl.persist(RaindanceBaseHomeImpl.java:67)
      at se.raindance.purchasecommission.home.CommissionHome.persist(CommissionHome.java:43)
      at se.raindance.purchasecommission.home.CommissionHome$Proxy$_$$_WeldSubclass.persist(CommissionHome$Proxy$_$$_WeldSubclass.java)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.jboss.weld.interceptor.proxy.SimpleInterceptionChain.invokeNextInterceptor(SimpleInterceptionChain.java:85)
      at org.jboss.weld.interceptor.proxy.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:127)
      at org.apache.myfaces.extensions.cdi.jpa.impl.transaction.TransactionalInterceptorStrategy.execute(TransactionalInterceptorStrategy.java:125)
      at org.apache.myfaces.extensions.cdi.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:54)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.jboss.weld.interceptor.proxy.SimpleMethodInvocation.invoke(SimpleMethodInvocation.java:30)
      at org.jboss.weld.interceptor.proxy.SimpleInterceptionChain.invokeNextInterceptor(SimpleInterceptionChain.java:69)
      at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:112)
      at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:88)
      at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:55)
      at se.raindance.purchasecommission.home.CommissionHome$Proxy$_$$_WeldSubclass.persist(CommissionHome$Proxy$_$$_WeldSubclass.java)
      at se.raindance.purchasecommission.controller.CommissionController.saveCommission(CommissionController.java:139)
      at se.raindance.purchasecommission.controller.CommissionController$Proxy$_$$_WeldClientProxy.saveCommission(CommissionController$Proxy$_$$_WeldClientProxy.java)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
      at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
      at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
      at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
      at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
      ... 28 more
  Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
      at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:489)
      at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:447)
      at org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:139)
      at org.hibernate.collection.internal.PersistentBag.isEmpty(PersistentBag.java:249)
      at se.raindance.purchasecommission.domain.Form.removeHiddenFields(Form.java:197)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.hibernate.ejb.event.BeanCallback.invoke(BeanCallback.java:39)
      at org.hibernate.ejb.event.EntityCallbackHandler.callback(EntityCallbackHandler.java:110)
      at org.hibernate.ejb.event.EntityCallbackHandler.postLoad(EntityCallbackHandler.java:103)
      at org.hibernate.ejb.event.EJB3PostLoadEventListener.onPostLoad(EJB3PostLoadEventListener.java:49)
      at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:292)
      at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:134)
      at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:999)
      at org.hibernate.loader.Loader.doQuery(Loader.java:878)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:293)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:263)
      at org.hibernate.loader.Loader.loadEntity(Loader.java:1977)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
      at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3821)
      at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:458)
      at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:427)
      at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204)
      at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:260)
      at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
      at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1079)
      at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1006)
      at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:613)
      at org.hibernate.type.EntityType.resolve(EntityType.java:441)
      at org.hibernate.type.EntityType.replace(EntityType.java:298)
      at org.hibernate.type.AbstractType.replace(AbstractType.java:178)
      at org.hibernate.type.TypeHelper.replace(TypeHelper.java:211)
      at org.hibernate.event.internal.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:409)
      at org.hibernate.event.internal.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:214)
      at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:154)
      at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76)
      at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:904)
      at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:888)
      at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:892)
      at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:879)
      ... 71 more
  
  feb 20, 2013 11:27:26 FM org.apache.deltaspike.core.api.provider.BeanProvider logWarningIfDependent
  WARNING: BeanProvider shall not be used to create @Dependent scoped beans. Bean: Managed Bean [class se.raindance.webutil.cdi.common.HandlesGeneric] with qualifiers [@Any @Default]
  feb 20, 2013 11:27:26 FM org.apache.deltaspike.core.api.provider.BeanProvider logWarningIfDependent
  WARNING: BeanProvider shall not be used to create @Dependent scoped beans. Bean: Managed Bean [class se.raindance.webutil.cdi.common.HandlesPersistence] with qualifiers [@Any @Default]
  2013-02-20 11:27:26,808 [http-bio-8080-exec-8] INFO  org.hibernate.event.internal.DefaultLoadEventListener - HHH000327: Error performing load command : org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
  2013-02-20 11:27:26,811 [http-bio-8080-exec-8] WARN  org.hibernate.engine.loading.internal.LoadContexts - HHH000100: Fail-safe cleanup (collections) : org.hibernate.engine.loading.internal.CollectionLoadContext@4b2f3792&lt;rs=org.hibernate.engine.jdbc.internal.proxy.ResultSetProxyHandler@3308315a[valid=false]&gt;
  2013-02-20 11:27:26,812 [http-bio-8080-exec-8] WARN  org.hibernate.engine.loading.internal.CollectionLoadContext - HHH000160: On CollectionLoadContext#cleanup, localLoadingCollectionKeys contained [1] entries
  2013-02-20 11:27:26,822 [http-bio-8080-exec-8] ERROR se.raindance.webutil.cdi.common.HandlesGeneric - Printing stacktrace: -91600366
  org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
      at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:489)
      at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:447)
      at org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:139)
      at org.hibernate.collection.internal.PersistentBag.isEmpty(PersistentBag.java:249)
      at se.raindance.purchasecommission.domain.Form.removeHiddenFields(Form.java:197)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.hibernate.ejb.event.BeanCallback.invoke(BeanCallback.java:39)
      at org.hibernate.ejb.event.EntityCallbackHandler.callback(EntityCallbackHandler.java:110)
      at org.hibernate.ejb.event.EntityCallbackHandler.postLoad(EntityCallbackHandler.java:103)
      at org.hibernate.ejb.event.EJB3PostLoadEventListener.onPostLoad(EJB3PostLoadEventListener.java:49)
      at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:292)
      at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:134)
      at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:999)
      at org.hibernate.loader.Loader.doQuery(Loader.java:878)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:293)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:263)
      at org.hibernate.loader.Loader.loadEntity(Loader.java:1977)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
      at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3821)
      at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:458)
      at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:427)
      at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204)
      at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:260)
      at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
      at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1079)
      at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1006)
      at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:613)
      at org.hibernate.type.EntityType.resolve(EntityType.java:441)
      at org.hibernate.type.EntityType.replace(EntityType.java:298)
      at org.hibernate.type.AbstractType.replace(AbstractType.java:178)
      at org.hibernate.type.TypeHelper.replace(TypeHelper.java:211)
      at org.hibernate.event.internal.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:409)
      at org.hibernate.event.internal.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:214)
      at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:154)
      at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76)
      at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:904)
      at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:888)
      at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:892)
      at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:879)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:45)
      at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105)
      at org.jboss.weld.proxies.EntityManager$1148094400$Proxy$_$$_WeldClientProxy.merge(EntityManager$1148094400$Proxy$_$$_WeldClientProxy.java)
      at se.raindance.persistence.RaindanceBaseHomeImpl.update(RaindanceBaseHomeImpl.java:57)
      at se.raindance.purchasecommission.home.CommissionHome.update(CommissionHome.java:59)
      at se.raindance.purchasecommission.home.CommissionHome$Proxy$_$$_WeldSubclass.update(CommissionHome$Proxy$_$$_WeldSubclass.java)
      at se.raindance.persistence.RaindanceBaseHomeImpl.persist(RaindanceBaseHomeImpl.java:67)
      at se.raindance.purchasecommission.home.CommissionHome.persist(CommissionHome.java:43)
      at se.raindance.purchasecommission.home.CommissionHome$Proxy$_$$_WeldSubclass.persist(CommissionHome$Proxy$_$$_WeldSubclass.java)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.jboss.weld.interceptor.proxy.SimpleInterceptionChain.invokeNextInterceptor(SimpleInterceptionChain.java:85)
      at org.jboss.weld.interceptor.proxy.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:127)
      at org.apache.myfaces.extensions.cdi.jpa.impl.transaction.TransactionalInterceptorStrategy.execute(TransactionalInterceptorStrategy.java:125)
      at org.apache.myfaces.extensions.cdi.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:54)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.jboss.weld.interceptor.proxy.SimpleMethodInvocation.invoke(SimpleMethodInvocation.java:30)
      at org.jboss.weld.interceptor.proxy.SimpleInterceptionChain.invokeNextInterceptor(SimpleInterceptionChain.java:69)
      at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:112)
      at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:88)
      at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:55)
      at se.raindance.purchasecommission.home.CommissionHome$Proxy$_$$_WeldSubclass.persist(CommissionHome$Proxy$_$$_WeldSubclass.java)
      at se.raindance.purchasecommission.controller.CommissionController.saveCommission(CommissionController.java:139)
      at se.raindance.purchasecommission.controller.CommissionController$Proxy$_$$_WeldClientProxy.saveCommission(CommissionController$Proxy$_$$_WeldClientProxy.java)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
      at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
      at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
      at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
      at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
      at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
      at org.apache.myfaces.extensions.cdi.jsf.impl.security.SecurityViolationAwareActionListener.processAction(SecurityViolationAwareActionListener.java:56)
      at org.apache.myfaces.extensions.cdi.jsf.impl.config.view.ViewControllerActionListener.processAction(ViewControllerActionListener.java:68)
      at org.apache.myfaces.extensions.cdi.jsf.impl.listener.action.CodiActionListener.processAction(CodiActionListener.java:58)
      at javax.faces.component.UICommand.broadcast(UICommand.java:315)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      at org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.execute(CodiLifecycleWrapper.java:95)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:722)
  </code></pre>
  
  <p>When debugging, I noticed that it seems to come from a part of the code in the Form entity: </p>
  
  <pre><code>@PostLoad
  public void removeHiddenFields() {
      if(fields.isEmpty()) {
          return;//don't do anything if there are no fields
      }
      for(int i = 0; i &lt; fields.size(); i++) {
          if(fields.get(i).isHidden()) {
              fields.remove(fields.get(i));
          }
      }
  }
  </code></pre>
  
  <p>The part "fields.isEmpty()" throws the exception upwards. </p>
  
  <p>From what I've read, this is supposed to be fixable by setting a collection to be fetched eagerly. I assume that the problem is the fields collection. But ...</p>
  
  <pre><code>@JoinColumn(name = "FORM")
  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  private List&lt;Field&gt; fields = new ArrayList&lt;Field&gt;();
  </code></pre>
  
  <p>It is already fetching eagerly. Had to do that to solve another problem encountered earlier in the development. </p>
  
  <p>What could be the problem?</p>
  
  <p>Added: </p>
  
  <p>The Form entities are loaded as such: </p>
  
  <p>There is a class that handles the database queries for the Form entity. There are two methods for getting them from the DB (depending on which type of form). </p>
  
  <pre><code>public List&lt;Form&gt; getAllActiveForms() {
      TypedQuery&lt;Form&gt; query = this.getEntityManager().createNamedQuery(
              "getAllActiveForms", Form.class);
      return query.getResultList();
  }
  
  public List&lt;Form&gt; getAllInactiveForms() {
      TypedQuery&lt;Form&gt; query = this.getEntityManager().createNamedQuery(
              "getAllInactiveForms", Form.class);
      return query.getResultList();
  }
  </code></pre>
  
  <p>The named queries are defined as such on the Form entity: </p>
  
  <pre><code>@NamedQueries({
          @NamedQuery(name = "getAllActiveForms", query = "SELECT f FROM Form f WHERE f.isEnabled=true"),
          @NamedQuery(name = "getAllInactiveForms", query = "SELECT f FROM Form f WHERE f.isEnabled=false") })
  </code></pre>
  
  <p>The "currentForm" that's used in the function is picked from one of those lists. </p>
  
  <p>I also noticed right now that another function in the application that simply updates a Form, now throws the same kind of exception. This time it comes from the merge()-function: </p>
  
  <pre><code>@Transactional
  public Form updateAndReturn() {
      getInstance().setTimestamp(System.currentTimeMillis());
      Form f = getEntityManager().merge(getInstance());
      getEntityManager().flush();
      return f;
  }
  </code></pre>