根据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()
.