Результаты работы базы данных Grails для одной транзакции? - PullRequest
2 голосов
/ 17 мая 2011

Я хотел бы иметь возможность разбивать результаты своей базы данных на что-то вроде CriteriaBuilder, но мне нужно, чтобы мои результаты были согласованы в отношении одного момента времени.

Есть ли простой способ как-то разбить на страницы и сохранить выбор в той же транзакции /

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Вы отказались от сохранения всего набора результатов в памяти, используя ScrollableResult?

Смотрите здесь

DomainObject.createCriteria().scroll{} возвращает ScrollableResult

0 голосов
/ 17 мая 2011

Укажите требуемое смещение в критериях на основе номера текущей страницы.

def results = DomainClass.withCriteria {
   firstResult ( (currentPageNumber - 1) * itemsPerPage)
   maxResults (itemsPerPage)
}

Чтобы узнать общее количество страниц, вам потребуется еще один запрос:

def numberOfPages = DomainClass.count()
if(numberOfPages != 0) numberOfPages = numberOfPages / itemsPerPage + 1
...