grails - 覆盖DomainClass

标签 grails grails-plugin grails-domain-class

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

这是.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/

相关文章:

database - 使用Hibernate从Grails中的列查询数据库值

grails - 可以使用哪些Grails插件与Twitter快速集成

grails - 没有读取外部配置值

Java JPG 编解码器无法工作

grails - 在 Elasticsearch Grails 中解码域类错误

grails - 如何为每个类实例设置唯一约束?

mysql - Grails:将枚举类型的mysql字段映射到域类

mongodb - 多个数据源和 Multi-Tenancy 之间有什么区别?

performance - 为什么 Grails 应用程序部署在 Tomcat 上时会占用 30% 的 CPU?

grails - Grails/GORM属于返回引用命名