Spring Boot PagingAndSortingRepository删除第一个元素或项目

时间:2018-08-14 11:55:33

标签: java sql spring-boot spring-data-jpa jpql

对于我的存储库,我将扩展到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嵌套查询中实现,例如...一条消息可以包含 另一条消息(引用的消息),等等。

  • 使用代码手动实现按作者获取消息列表。 尽管分页有效,但似乎正在查询所有记录。 只是返回所需的行或记录。排序似乎无效 正确。

谢谢!

0 个答案:

没有答案