我正在使用休眠过滤器来过滤域对象,每个用户只能看到他/她的数据。
这是.get()的有效期望。
插件页面建议使用.findById()。
这样做的原因是,不会将get视为查询,并且不会应用我的休眠过滤器。因此,该用户会看到另一个用户的数据,而他当然不会。
我现在正在寻找一种以.findBy()替换所有.get()的有效方法。
有没有办法通过扩展实现这一目标?
我所有的域类都扩展了BaseDomainClass。
最佳答案
您可以使用Groovy metaClass覆盖get()方法。您可以通过将其放入Bootstrap.groovy中的init闭包中来实现。
BaseDomainClass.metaClass.static.get = {Serializable id ->
delegate.findById(id)
}
注意:您可能必须将 BaseDomainClass导入Bootstrap.groovy。
关于grails - 覆盖DomainClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994813/