4 Replies Latest reply on Dec 9, 2009 2:21 PM by balazska

    Can't get Hibernate Filters working

    modoc

      I am trying to use Hibernate Filters to screen out Users marked as inactive.  I have never used Hibernate Filters before.


      First I tried adding a Filter to the get method of a collection which is particularly important for the filtering:


          @ManyToOne
          @JoinColumn(name = "user_id")
          @Filter(name = "activeUsersFilter", condition = "active = true")
          public User getUser() {
           return this.mUser;
          }
      



      That didn't work.  No errors, but no filtering.


      Next I tried adding a Filter to the User class itself:


      @Entity(name = "hgiw_user")
      @Table(name = "hgiw_user", catalog = "public")
      @FilterDef(name = "activeUsersFilter")
      @Filter(name = "activeUsersFilter", condition = "active = true")
      public class User {
      



      Same thing.  No errors, but didn't work.


      Then I went into components.xml and added this:


           <persistence:filter name="activeUsersFilter">
                <persistence:name>activeUsersFilter</persistence:name>
                <persistence:parameters>
                     <key>active</key>
                     <value>#{'true'}</value>
                </persistence:parameters>
           </persistence:filter>
      



      Same thing.


      Then I changed my persistence:managed-persistence-context entry from:



      <persistence:managed-persistence-context name="entityManager" auto-create="true" persistence-unit-jndi-name="java:/HGIWEntityManagerFactory">
      </persistence:managed-persistence-context>





      To this:




      <persistence:managed-persistence-context name="entityManager" auto-create="true"
      persistence-unit-jndi-name="java:/HGIWEntityManagerFactory">
      <persistence:filters>
                     <value>#{activeUsersFilter}</value>
                </persistence:filters>
           </persistence:managed-persistence-context>





      Now when I attempt to load a page I get a ton of errors in the logs and the page will not load.


      Any ideas of what I'm doing wrong?


      Errors:


      18:05:23,381 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,381 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,390 ERROR [STDERR] May 13, 2008 6:05:23 PM com.sun.facelets.FaceletViewHandler handleRenderException
      SEVERE: Error Rendering View[/index.xhtml]
      javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection
           at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
           at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:99)
           at com.howgoodiwas.util.Configuration.getSiteConfiguration(Configuration.java:67)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
           at java.lang.reflect.Method.invoke(Method.java:585)
           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.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
           at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
           at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
           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 com.howgoodiwas.util.Configuration_$$_javassist_0.getSiteConfiguration(Configuration_$$_javassist_0.java)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
           at java.lang.reflect.Method.invoke(Method.java:585)
           at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
           at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
           at org.jboss.seam.Component.callComponentMethod(Component.java:2082)
           at org.jboss.seam.Component.getInstanceFromFactory(Component.java:1926)
           at org.jboss.seam.Component.getInstance(Component.java:1863)
           at org.jboss.seam.Component.getInstance(Component.java:1840)
           at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
           at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
           at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166)
           at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53)
           at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
           at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
           at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
           at org.jboss.el.parser.AstValue.getValue(AstValue.java:63)
           at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
           at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
           at javax.faces.component.UIParameter.getValue(UIParameter.java:156)
           at org.jboss.seam.ui.util.UrlBuilder.addParameter(UrlBuilder.java:93)
           at org.jboss.seam.ui.util.ViewUrlBuilder.addParameter(ViewUrlBuilder.java:40)
           at org.jboss.seam.ui.component.UISeamCommandBase.getUrl(UISeamCommandBase.java:45)
           at org.jboss.seam.ui.renderkit.LinkRendererBase.doEncodeBegin(LinkRendererBase.java:26)
           at org.jboss.seam.ui.util.cdk.RendererBase.encodeBegin(RendererBase.java:79)
           at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
           at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
           at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
           at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
           at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
           at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
           at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
           at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
           at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
           at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
           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.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
           at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
           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:147)
           at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:276)
           at org.ajax4jsf.Filter.doFilter(Filter.java:175)
           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(Thread.java:613)
      Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
           at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
           at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
           at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
           at org.hibernate.exception.J
      18:05:23,393 ERROR [STDERR] DBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
           at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426)
           at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
           at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
           at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
           at org.hibernate.loader.Loader.doQuery(Loader.java:673)
           at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
           at org.hibernate.loader.Loader.doList(Loader.java:2220)
           at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
           at org.hibernate.loader.Loader.list(Loader.java:2099)
           at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
           at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
           at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
           at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
           at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
           at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:80)
           ... 93 more
      Caused by: org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
           at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:94)
           at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:47)
           at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
           ... 107 more
      Caused by: javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >
           at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:304)
           at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:396)
           at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842)
           at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88)
           ... 109 more
      18:05:23,427 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,427 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,446 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,447 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,459 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,459 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,464 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,465 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,472 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,475 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,479 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,479 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,487 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,488 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,535 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,536 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      18:05:23,554 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      18:05:23,554 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57fe7f:d9c1:482a3aa9:32 status: ActionStatus.ABORT_ONLY >)
      



        • 1. Re: Can't get Hibernate Filters working
          pmuir

          Ask on the hibernate forum.

          • 2. Re: Can't get Hibernate Filters working
            modoc

            Okay.  I just wanted to be sure that I wasn't doing something wrong on the Seam side in configuring the persistence:managed-persistence-context, since that is where my error is coming from, not the Filter definitions themselves.


            I'll go ask there instead.

            • 3. Re: Can't get Hibernate Filters working
              jkaijans

              Hi Devon,


              I noticed you've been playing with the filters, so I wanted to ask you (or anybody!) something as I'm quite stuck with this..


              It puzzles me that if I have an entity class with nested list of objects defined with a OneToMany mapping to another table, a filter defined for that nested object class doesn't apply. In other words, when Hibernate eagerly (or lazily) loads those objects when querying the holding object, the filter of the nested objects doesn't seem to work. It should, right? Did you ever run into any problem like this?


              Best regards,
              Jukka


              • 4. Re: Can't get Hibernate Filters working
                balazska

                Hy!


                What was the solution?