我正在尝试向grails域类添加方法,例如
class Item {
String name
String getReversedName() {
name.reverse()
}
}
当我尝试使用grails控制台加载应用程序时,出现以下错误:
引起:org.springframework.beans.factory.BeanCreationException:创建名为'sessionFactory'的bean时出错:init方法的调用失败;嵌套异常是org.hibernate.PropertyNotFoundException:在类Item中找不到属性reversedName的setter ......还有18个
看起来Hibernate将getReversedName()解释为属性的getter,但是在这种情况下它是派生字段,因此不应该持久化。显然,在我的实际代码中,我所暴露的业务逻辑更为复杂,但与此问题无关。我希望能够在我的代码/ gsps中调用item.reversedName。
如果没有Grails尝试使用Hibernate映射它,我如何在Grails域类中提供对方法的属性(getter)访问?
答案 0 :(得分:11)
我相信你有两个选择:
1)使用def
def getReversedName() {
name.reverse()
}
2)在域对象的顶部添加一个瞬态声明:
static transients = [ 'reversedName' ]
[edit] (我会选择#1)(我会选择#2); - )