覆盖进入DomainClass

时间:2015-08-13 17:28:56

标签: grails grails-plugin grails-domain-class

我正在使用hibernate过滤器来过滤域对象,每个用户只看到他/她的数据。

这对于.get()来说是可行的。

插件页面建议使用.findById()。

原因是get不被视为查询,并且我的hibernate过滤器未应用。因此,用户将看到另一个用户的数据,当然他不应该这样做。

我现在正在寻找一种用.findBy()替换所有.get()的有效方法。

有没有办法通过扩展实现这个目标?

我的所有域类都扩展了BaseDomainClass。

1 个答案:

答案 0 :(得分:0)

您可以使用Groovy metaClass覆盖 get()方法。您可以将它放在 Bootstrap.groovy 中的 init 闭包内。

BaseDomainClass.metaClass.static.get = {Serializable id ->
    delegate.findById(id)
}

注意:您可能必须导入 BaseDomainClass Bootstrap.groovy