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