Hibernate过滤器未应用于Grails服务/作业

时间:2013-01-16 05:33:05

标签: hibernate grails gorm

我的域名使用hibernate过滤器,如下所示:

class UserMapping {
    // Senseless App Logic here
    static hibernateFilters = {
        typeFilter(condition: "type = 'IDENTIFIED'", default: true)
        flagFilter(condition: "flags = 'ACTIVE'", default: true)
    }
}

当我在控制器中使用它们时似乎应用得很好但是当我在我的服务或工作中执行相同的findBy ..时,它们不适用。有什么建议吗?

如果它有任何区别,我会在mixin中调用findBy。

这个问题似乎有关,但它并不完全符合我的要求: enabling grails hibernate filters

2 个答案:

答案 0 :(得分:2)

自动启用过滤器的唯一时间是在网络请求期间 - 这是因为插件的HibernateFilterFilters在每个网络请求之前应用了所有已启用的过滤器。但是没有全局自动过滤器逻辑 - 这是不切实际的。

而是使用plugin documentation中描述的方法之一,例如

UserMapping.withHibernateFilters {
   ..code to execute
}

答案 1 :(得分:0)

在我的情况下,我发现我忘了"默认:true"旗。 :○

我们在BootStrap.groovy中也有代码,它启用了休眠过滤器:

def init = { servletContext ->
    //Hibernate filters
    MyDomainObject.enableHibernateFilter('myFilter')
}

(我意识到这个问题已经得到了回答,但我希望这可以帮助那些正在寻找的人。)