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(),

0 ответов

Другие вопросы по тегам