Я смотрю на миграцию нашего традиционного решения jpa/dao на Spring Data.Данные о весне Pageable и LIMIT/OFFSET
Однако, один из наших интерфейсных модулей - SmartGWT, а их компоненты привязки данных постепенно загружаются с использованием ограничения/смещения, что затрудняет использование Pageable.
Это вызывает проблемы, так как не является уверенным, что ограничение/смещение может быть переведено на номер страницы. (он может отличаться в зависимости от того, как пользователь прокручивает, изменяется размер экрана и т. д.).
Я просмотрел Slice и т. Д., Но не смог найти способ использовать значения предела/смещения в любом месте.
Было интересно, есть ли у кого-нибудь указатели? Оптимально я хотел бы продолжать использовать limit/offset, но использовать их в своих интерфейсах репозитория без необходимости кодирования реализации и установки их вручную, как сейчас (query.setMaxResults и т. Д.)
Редактировать: Чтобы уточнить, почему у меня есть проблемы. Предел/смещение могут отличаться между исходными и последующими выборками данных в компоненте smartgwt. Для listgrid первая выборка может иметь ограничение, установленное, например, на 89, так как это количество строк, видимых на экране, и смещение 0. Следующий запрос, однако, может иметь смещение 89 и ограничение 50, поскольку это «datapagesize» компонента "значение до 50, так что это произойдет, когда я прокручу вниз. Если я отскакиваю далеко вниз до отпускания, он может, в зависимости от настроек, выбрать, например, строки 159-209. В принципе, нет никакой гарантии, что смещение является чем-то кратным. Трудно преобразовать смещение 17, ограничение 5 на страницу.
не ограничивает = размер, а смещение - это просто страница * размер? который используется при реализации Pageableable по умолчанию? – ikumen
Нет, потому что это может измениться. Скажем, у меня есть Listgrid. Логика SmartGWT изначально устанавливает смещение на 0 и достаточно большой предел для загрузки того, что можно увидеть на экране. Это может быть 50, 79, 99 и т. Д.в зависимости от размера экрана, размера браузера и т. д. В следующий раз он будет использовать значение «pagesize», которое, например, может быть 50. Затем, в зависимости от того, как вы прокручиваете, в следующий раз может потребоваться выборка строк 250-300. Моя проблема заключается в том, что я не могу контролировать начальное значение LIMIT, в основном, а также то, что smartgwt решает, что смещение относится к последующим запросам. – Mathias