覆盖 DomainClass 中的获取

Override get in DomainClass

我正在使用休眠过滤器来过滤域对象,每个用户只能看到 his/her 数据。

这是对 .get() 的期望。

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

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

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

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

我的所有域-类 扩展 BaseDomainClass。

您可以使用 Groovy 元类覆盖 get() 方法。您可以通过将其放在 Bootstrap.groovy.

中的 init 闭包中来实现
BaseDomainClass.metaClass.static.get = {Serializable id ->
    delegate.findById(id)
}

注意:您可能必须 import BaseDomainClassBootstrap.groovy