通常,当我向域对象添加辅助方法时,在编译时会出现错误,解析为“未找到 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/