grails - 是否有 Grails 域对象的禁止方法名称列表?

标签 grails grails-domain-class

通常,当我向域对象添加辅助方法时,在编译时会出现错误,解析为“未找到 x 属性”。这似乎发生在方法名称 getX 上。 , setX ,以及最近isX .是否有我应该避免的姓名形式列表?有没有办法注释或以其他方式标记这些方法,以便 Grails 不会将它们与自动属性混淆?

最佳答案

Grails 自动检测属性并假定它们是持久的。 Groovy 中的公共(public)字段在后台创建了一个 getter 和 setter,因此假定 getter 与持久字段相关联。

但是,如果您想要一个以 'get' 或 'is' 开头但不是持久性字段的 getter 的辅助方法,则有两种选择。一种是使用transients列表 - 见 http://grails.org/doc/latest/ref/Domain%20Classes/transients.html

另一种选择是将返回值声明为 def .由于它没有类型化(def 是 Object 的别名),Hibernate 不能持久化它,因为它不知道要使用什么数据类型,所以它被忽略了。

我的首选是transients列出,因为我宁愿有自我记录的方法,其中很明显他们做了什么,他们接受什么参数类型,以及他们返回什么。

关于grails - 是否有 Grails 域对象的禁止方法名称列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057404/

相关文章:

angularjs - 从angularjs 1.5上传图像到grails 3作为byte []并将其保存在postgresql中作为bytea

grails - Grails绕过Domain类的beforeUpdate方法

grails - 由于模糊的def递归导致的grails中的堆栈溢出

grails - 在Grails中使用Amazon SES时出错

tomcat - Grails 数据表和 Tomcat 选择不起作用

rest - 如何在Grails中将领域类作为REST资源编写集成测试?

hibernate - chalice :Column transformers ( like Hibernate )

url - 同一网址的不同映射

hibernate - Tomcat/Grails 内存泄漏

grails - 如何在第一个组合框(g:select)的基础上填充第二个组合框(g:select)的值?