对于我的存储库,我将扩展到PagingAndSortingRepository
。
public interface MessagesRepository extends PagingAndSortingRepository<Message, String> {
...
Page<Message> findByAuthorId(Integer authorId, Pageable pageable);
...
}
在特殊情况下,我需要删除列表的第一个元素(好像它不存在),并且排序和分页应该正常进行。
最终响应将在json中,并且我正在使用JsonFormat批注将日期字段格式化为ISO 8601。
示例:
Total row count: 20
Size: 5
Pages: 4
通常每个页面返回的项目是...
Page 1: from 1 to 5
Page 2: from 6 to 10
Page 3: from 11 to 15
Page 4: from 16 to 20
所需行为:
不包括第一个元素或项目。 总行数变为:19(20-1)
Page 1: from 1 to 5 (was items 2 to 6)
Page 2: from 6 to 10 (was items 7 to 11)
Page 3: from 11 to 15 (was items 12 to 16)
Page 4: from 16 to 19 (was items 17 to 20)
以下是我尝试的方法:
对于第1页,删除第一个元素或项目。但这导致第1页的4
elements
应该是5 elements
。
使用SQL手动实现按作者获取消息列表 (自定义行过滤器,排序等)。这导致一些错误或 像@JsonFormat这样的问题在Date上无法正常工作,并且很难 在SQL嵌套查询中实现,例如...一条消息可以包含 另一条消息(引用的消息),等等。
使用代码手动实现按作者获取消息列表。 尽管分页有效,但似乎正在查询所有记录。 只是返回所需的行或记录。排序似乎无效 正确。
谢谢!