Grails 计算域类中一对多的子级

标签 grails grails-orm

我有一个一对多的关系:

class Author {
    String name
    static hasMany = [books:Book]
    static constraints = {
    }
}

class Book {
    String name
    static belongsTo = [author:Author]
    static constraints = {
    }
}

我希望能够计算属于作者类中作者的书籍数量,这样生成的 MySQL 表将如下所示:
id | version | name | bookcount
-- | ------- | ---- | ---------
 1 |       0 | foo  |        15
 2 |       0 | bar  |         3
 3 |       0 | baz  |         7

...其中 bookcount 是作者类中定义的字段:
class Author {
    String name
    int bookcount = ??
    static constraints = {
    }
}

编辑 1:
bookcount 必须保存在数据库中。

最佳答案

如果您不想将所有子项从数据库中拉出并对其进行计数(这可能对非常大的数据集不利),则另一种方法是在父类上使用这样的方法。

    def numberOfChildren()
{
    def result = Child.executeQuery("select count(*) from Child where parent = :parent", ["parent":this])
    def resultCount = result[0]
    return resultCount
}

关于Grails 计算域类中一对多的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24616116/

相关文章:

grails - grails为mysql View 创建域类

email - Gmail SMTP 的 Grails 邮件插件问题

java - 从Grails应用程序中终止长时间运行的SQL查询

Grails 3.0.1 - 如何以及在何处配置 grails.gorm.default.mapping

grails - Grails 3.2.8:Java验证程序错误,无法进行热重装

grails - 将命令对象与 ValueConverter 绑定(bind)

postgresql - Grails 3.3.0 与 PostgreSQL 10.1 给出列 this_.id 不存在错误

sql - 指定从 GORM 类生成的 DDL 中的字段顺序?

grails - 如何清除和替换 Grails/Groovy 中一对多关系中的集合

grails - maven/grails 应用程序中域类的自定义位置