4

根据Gorm 6 文档第 7.4 节, Where Query 返回 a DetachedCriteria,它提供了一个方法,该方法count()应该返回查询返回的记录数。事实上,据我所知,如果dc是 的一个实例DetachedCriteria,那么

dc.count() == dc.list().size()

必须成立。

在包含投影的 Where Query 的情况下,count()似乎返回了其他内容。在这个简单的例子中:

query = Runner.where {
    projections {
        groupProperty 'finishPosition'
        rowCount()
    }
}

println "query.count() ${query.count()}"
println "query.list().size() ${query.list().size()}"

打印的结果是:

query.count() 576
query.list().size() 22

如果我也打印query.list(),它显示为

query.list() [[14, 576], [12, 1945], [8, 5682], [17, 78], [1, 91842], [15, 174], [10, 3836], [11, 2873], [4, 90688], [18, 36], [0, 336177], [16, 110], [6, 63957], [19, 6], [2, 91669], [21, 2], [3, 91550], [20, 4], [13, 956], [5, 72852], [9, 4811], [7, 6238]]

也就是说,list()并且list.size()是一致的(并且匹配底层数据库上的 SQL 查询)。

有没有人知道为什么count()在这种情况下似乎关闭了?我发现有趣的是count()- 576返回的数字与返回rowCount()的第一条记录的投影相同......

目前,我想我会使用query.list().size().

4

0 回答 0