在Domain课堂上FooReward我添加了一个方法
int getQuantity() {
FooRewardAssignment.countByReward(this)
}
Run Code Online (Sandbox Code Playgroud)
在GSP中的用法应该是fooRewardInstance.quantity,但是在启动时(在引导程序中)的错误,其中包含没有找到setter方法的消息.
如果我改成它
Set<FooRewardAssignment> getListOfFoos() {
FooRewardAssignment.findAllByReward(this)
}
Run Code Online (Sandbox Code Playgroud)
并且更改GSP中的用法badeRewardInstance.listOfFoos.size(),它可以工作并向我显示特殊FooReward分配的频率.
知道版本1有什么问题吗?
解决此问题的两种解决方法:
将返回值更改为def:
def getQuantity() {
FooRewardAssignment.countByReward(this)
}Run Code Online (Sandbox Code Playgroud)或者通过添加瞬态列表:
static transients = ['quantity']
int getQuantity() {
FooRewardAssignment.countByReward(this)
}有时GORM基于域类中的setter和getters方法在tabel中创建列.在这种情况下,GORM希望添加像'quantity'这样的列,但是会发生错误,因为GORM只能看到getter,而且看不到setter.所以我们可以说我们不想在数据库中创建这个列(静态瞬态),或者我们可以将返回值设置为def - 但是不要问我为什么GORM没有考虑'def getters';)
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |