Согласно разделу 7.4 документации * Gorm 6 запрос Where возвращает DetachedCriteria
, который предоставляет метод count()
, который должен возвращать количество записей, возвращаемых запросом. На самом деле, насколько я могу судить, если dc
является экземпляром DetachedCriteria
, то
dc.count() == dc.list().size()
должно быть верным.
В случае запроса Where, содержащего проекцию, 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()
.