Как я могу также получить количество записей между 2 датами в граалях - PullRequest
1 голос
/ 21 июня 2019

у меня есть запрос ниже, я хочу подсчет между 2 датами в одном и том же запросе gorm

    def view = StackHash.createCriteria().list(params) {
        if(params?.process){
            eq("process",params.process)
            between("lastDateOfOccurence", fromDate, upToDate)
        }
        order("occurrence", "desc")
    }

    [
        title              : title,
        filter             : CommonService.makeFilterParams(params),
        subtitle           : subtitle,
        view               : view,
        reportInstanceTotal: StackHash.count() ///this is getting total number of records in the database irrespective of dates
    ]

1 Ответ

3 голосов
/ 21 июня 2019

Вы можете использовать атрибут totalCount результатов, если хотите узнать общее количество записей, соответствующих вашим критериям:

def view = StackHash.createCriteria().list(params) {
        if(params?.process){
            eq("process",params.process)
            between("lastDateOfOccurence", fromDate, upToDate)
        }
        order("occurrence", "desc")
    }

    [
        title              : title,
        filter             : CommonService.makeFilterParams(params),
        subtitle           : subtitle,
        view               : view,
        reportInstanceTotal: view.totalCount
    ]

Обратите внимание, что view.totalCount не обязательно совпадает с view.size(). .size() скажет вам, сколько записей в наборе результатов, а .totalCount скажет вам, сколько записей соответствует критериям поиска. Эти цифры могут быть разными. Например, если в вашей базе данных есть 1000 записей, 500 записей соответствуют вашим критериям, а params содержит что-то вроде [max: 10, offset: 0], тогда .size() будет равно 10, а .totalCount будет равно 500.

Надеюсь, это поможет.

...