hibernate - Hibernate过滤器插件在Grails中不起作用

标签 hibernate grails plugins filter multi-tenant

我正在使用Hibernate Filter在每个继承业务域的域中启用分支ID。

static hibernateFilters = {
        branchEnabledFilter(condition: ':branch_id=branch_id', types: 'long', default: true)
}

通过Our Grails过滤器启用此休眠过滤器...如下所示。
def filters = {
        all(controller:'login', action:'auth',invert:true) {
            before = {
                grailsApplication.getArtefacts("Domain")*.clazz.each{ clazz ->
                    if(clazz.getGenericSuperclass().getName().contains('BusinessDomain')){
                        def filter =  clazz.enableHibernateFilter('branchEnabledFilter')
                        filter.setParameter('branch_id',applicationContext.springSecurityService.principal?.branchId as long)
                    }
                }   
            }
            after = {
                //
            }
        }
}

首次登录时,我先调用家庭 Controller ,然后在仪表板页面中通过链接调用通知 Controller ...第一次遇到未设置分支ID的错误...但我的过滤器无法正常工作...但未启用这个请求的休眠过滤器...但是如果我修改了过滤器中的任何代码,例如注释println或取消注释println,那时候编译过滤器...那么一切正常...请告诉我这里发生了什么...如何修复这...如何使所有请求中的工作..

最佳答案

很难确切地说出来,但是我正在做类似的事情,这就是我可以告诉的区别:

我认为您需要为每个域过滤器使用不同的名称,即:domainAFilter,domainBFilter等。

在Grails过滤器中,我使用(简短版本):

import org.grails.plugin.hibernate.filter.DefaultHibernateFiltersHolder;

def hibernateSession = grailsApplication.mainContext.sessionFactory.currentSession
DefaultHibernateFiltersHolder.defaultFilters.each { name ->
  def aFilter = hibernateSession.enableFilter(name)
  aFilter.setParameter('branchId', springSecurityService.principal.branchId)
}

我还有一个“相反的” Grails过滤器,在您的情况下只有Auth(controller:'login',action:'auth'),它循环遍历每个过滤器并将其禁用,但是我不确定是否需要这样做。
def hibernateSession = grailsApplication.mainContext.sessionFactory.currentSession
DefaultHibernateFiltersHolder.defaultFilters.each { name ->
  hibernateSession.disableFilter(name)
}

关于hibernate - Hibernate过滤器插件在Grails中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30660799/

相关文章:

java - @ManyToOne单向参数值与预期类型不匹配

Grails 错误 : No thread-bound request found: Are you referring to request attributes. .. 安装 Spring Security Core 后

Grails Fixtures/Build Test Data 插件在单元测试中不起作用

Grails 数据绑定(bind) : creating instances of an abstract class with a Map hasMany

javascript - jQuery Taggd 插件(编辑模式)获取输入字段中的值

java - Eclipse 的免费 UML 工具/插件可以生成 Java 代码吗?

jquery - 如何集成visual composer自定义wordpress主题

hibernate ,将表与附加列连接起来

java - 注释映射双向 OneToMany/ManyToOne 不获取?

java - hibernate + Maven + MySQL 连接器