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

时间:2011-02-20 13:50:02

标签: grails grails-domain-class

通常当我向域对象添加辅助方法时,我在编译时遇到错误,解析为“找不到x属性”。方法名称getXsetX以及最近isX似乎都会发生这种情况。我应该避免使用名单的清单吗?有没有办法注释或标记这些方法,所以Grails不会将它们与自动属性混淆?

3 个答案:

答案 0 :(得分:7)

Grails自动检测属性并假设它们是持久的。 Groovy中的公共字段在引擎盖下创建了一个getter和setter,因此假定getter与持久字段相关联。

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

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

我的偏好是transients列表,因为我宁愿使用自我记录的方法来显示它们的作用,它们接受的参数类型以及返回的内容。

答案 1 :(得分:0)

我不知道常见的清单 - 它太多样了。常规方法由Groovy和Grails的不同部分添加:

要访问声明的字段,而不是getter / setter,请使用java field access operator

答案 2 :(得分:0)

据我了解你的问题,你可以使用瞬态!

static transients = ['feildName']