我正在使用hibernate过滤器来过滤域对象,每个用户只看到他/她的数据。
这对于.get()来说是可行的。
插件页面建议使用.findById()。
原因是get不被视为查询,并且我的hibernate过滤器未应用。因此,用户将看到另一个用户的数据,当然他不应该这样做。
我现在正在寻找一种用.findBy()替换所有.get()的有效方法。
有没有办法通过扩展实现这个目标?
我的所有域类都扩展了BaseDomainClass。
答案 0 :(得分:0)
您可以使用Groovy metaClass覆盖 get()方法。您可以将它放在 Bootstrap.groovy 中的 init 闭包内。
BaseDomainClass.metaClass.static.get = {Serializable id ->
delegate.findById(id)
}
注意:您可能必须导入 BaseDomainClass 到 Bootstrap.groovy 。