enabling grails hibernate filters

后端 未结 2 1423
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-07 03:16

Hi I am using the Grails filter plugin

I am trying to define a default filter as below

// Defined inside the Book entity
static hibernateFilters = {
         


        
相关标签:
2条回答
  • 2021-01-07 04:12

    After a little digging around I have come up with a workaround for the above problem

    I basically extend the GrailsOpenSessionInViewFilter class

    public class OpenSessionInViewFilterExt extends GrailsOpenSessionInViewFilter{
    @Override
    protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
        Session session = super.getSession(sessionFactory);
        for (Object filterName : DefaultHibernateFiltersHolder.getDefaultFilters()) {
            session.enableFilter((String) filterName);
        }
        return session;
    }
    

    }

    I also have a entry in the web.xml

        <filter>
            <filter-name>OpenSessionInViewFilterExt</filter-name>
            <filter-class>com.nthdimenzion.hibernate.ext.OpenSessionInViewFilterExt</filter-class>
    </filter>
    
    
    <filter-mapping>
        <filter-name>OpenSessionInViewFilterExt</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    Now each time a new session is created the default filters are enabled for it. I think this should work, however it'll be better if some change can be made in the zkgrails plugin or the hibernate filters plugin so that the two can co-exist in a single application :)

    Thanks

    0 讨论(0)
  • 2021-01-07 04:14

    In my Grails 2.5.X app I enable the hibernate filters in a web filter, i.e. I have this code in grails-app/conf/Filters.groovy

        class Filters {
            publishedContentFilter(uri: '/**'){
                before = {
                    // enable the 'published filter in the Condition domain class
                    Condition.enableHibernateFilter('published')
                }
            }
        }
    

    In the integration tests in the plugin itself, the filters are enabled in the setup method of the test class.

    0 讨论(0)
提交回复
热议问题