在Domain
类FooReward
中,我添加了一个方法
int getQuantity() {
FooRewardAssignment.countByReward(this)
}
GSP中的用法应为
fooRewardInstance.quantity
,但在启动时(在 bootstrap 中)会出现错误,并提示未找到setter方法的消息。如果我将其更改为
Set<FooRewardAssignment> getListOfFoos() {
FooRewardAssignment.findAllByReward(this)
}
并将GSP中的用法更改为
badeRewardInstance.listOfFoos.size()
,它可以正常工作并向我展示分配特殊FooReward
的频率。知道版本1有什么问题吗?
最佳答案
解决此问题的两种方法:
def getQuantity() {
FooRewardAssignment.countByReward(this)
}
static transients = ['quantity']
int getQuantity() {
FooRewardAssignment.countByReward(this)
}
有时,GORM会根据域类中的setter和getters方法在表格中创建列。在这种情况下,GORM想要添加“quantity”之类的列,但是会发生错误,因为GORM仅看到getter,而没有看到setter。因此,可以说我们不想在数据库中创建此列(静态 transient ),也可以将返回值设置为def-但不要问我为什么GORM不考虑“def getters”;)
关于grails - 为什么域类中的get-Property仅可与Set和findAll一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4745242/