grails - 为什么域类中的get-Property仅可与Set和findAll一起使用?

标签 grails dns

DomainFooReward中,我添加了一个方法

int getQuantity() {
  FooRewardAssignment.countByReward(this)
}

GSP中的用法应为fooRewardInstance.quantity,但在启动时(在 bootstrap 中)会出现错误,并提示未找到setter方法的消息。

如果我将其更改为
Set<FooRewardAssignment> getListOfFoos() {
    FooRewardAssignment.findAllByReward(this)
}

并将GSP中的用法更改为badeRewardInstance.listOfFoos.size(),它可以正常工作并向我展示分配特殊FooReward的频率。

知道版本1有什么问题吗?

最佳答案

解决此问题的两种方法:

  • 将返回值更改为def:
    def getQuantity() {    
       FooRewardAssignment.countByReward(this) 
    }
  • 或通过添加 transient 列表:
    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/

    相关文章:

    mysql - 给 MySQL 中的一个 int 表列一个范围从 1 到 9 的允许值

    Grails:普通类和命令对象之间的区别?

    java - 为什么 Netbeans 无法识别我的 Grails 应用程序中的 Maven 依赖项导入?

    docker - 从主机查询 docker 内嵌的 dns

    google-app-engine - 我可以将域名指向 Google App Engine 服务吗?

    kubernetes - 如何获取 kubernetes 服务的 FQDN DNS 名称?

    image - Grails:从应用程序外部提供静态内容

    Grails 使用来自 POST 请求的 XML 填充参数

    java - 如何使用spring security访问根服务器中的文件

    amazon-web-services - Route53 中的域将根指向外部主机,在 AWS 中保留子域