【发布时间】:2015-07-24 21:38:43
【问题描述】:
我正在考虑将我们传统的 jpa/dao 解决方案迁移到 Spring Data。
但是,我们的前端之一是 SmartGWT,它们的数据绑定组件仅使用限制/偏移量逐步加载数据,因此很难使用 Pageable。
这会导致问题,因为不确定限制/偏移量是否可以转换为页码。 (它可能会因用户滚动、屏幕大小调整等而有所不同)。
我查看了 Slice 等,但无法找到在任何地方使用限制/偏移值的方法。
想知道是否有人有任何指示?理想情况下,我想继续使用限制/偏移量,但在我的存储库接口中使用它们,而不必像现在这样手动设置实现和设置(query.setMaxResults 等)
编辑:澄清为什么我有问题 - smartgwt 组件中的初始和后续数据提取之间的限制/偏移量可能不同。例如,对于 listgrid,第一次获取的限制可能设置为 89,因为这是屏幕上可见的行数,偏移量为 0。但是,下一个请求可能有偏移量 89,限制为 50,因为这是组件的“数据页大小” " 值为 50,所以这就是我向下滚动时将获取的值。 如果我在释放之前向下滚动到很远,它可能会根据设置获取例如第 159-209 行。基本上,不能保证偏移量是任何东西的倍数。很难将偏移量 17、限制 5 转换为一页。
【问题讨论】:
-
不限制=大小,偏移量只是页面*大小?哪个是默认的 Pageable 实现?
-
不,因为它可能会有所不同。假设我有一个 Listgrid。 SmartGWT 逻辑最初会将偏移设置为 0,并设置一个足够大的限制来加载屏幕上可以看到的内容。这可以是 50、79、99 等,具体取决于屏幕大小、浏览器大小等。下一次,它将使用“pagesize”值,例如可能是 50。然后,根据您的滚动方式,下一次可能例如,获取第 250-300 行。我的问题是我无法控制初始 LIMIT 值,基本上,smartgwt 也无法决定偏移量在后续请求中。
标签: spring jpa spring-data spring-data-jpa