在Domain
班FooReward
我添加了一个方法
int getQuantity() {
FooRewardAssignment.countByReward(this)
}
GSP中的用法应为fooRewardInstance.quantity
,但在启动时(在引导程序中)出现错误,并且发出没有找到setter方法的消息。
如果我将其更改为
Set<FooRewardAssignment> getListOfFoos() {
FooRewardAssignment.findAllByReward(this)
}
并将GSP中的使用情况更改为badeRewardInstance.listOfFoos.size()
,它可以正常显示特殊FooReward
的分配频率。
知道版本1中有什么问题吗?
答案 0 :(得分:5)
此问题的两种解决方法:
将返回值更改为def:
def getQuantity() {
FooRewardAssignment.countByReward(this)
}
或者通过添加瞬态列表:
static transients = ['quantity']
int getQuantity() {
FooRewardAssignment.countByReward(this)
}
有时GORM基于域类中的setter和getters方法在tabel中创建列。在这种情况下,GORM希望添加像'quantity'这样的列,但是会发生错误,因为GORM只能看到getter,而且看不到setter。所以我们可以说我们不想在数据库中创建这个列(静态瞬态)或者我们可以将返回值设置为def - 但是不要问我GORM没有考虑'def getters'的原因;)