在JPA信息库上使用Spring-Data可分页对象进行排序时,结果重复

时间:2018-11-22 15:05:46

标签: spring spring-data-jpa spring-data

我有一个rest-api,它在被调用时会返回用户列表。该API使用org.springframework.data.domain.Pageable对结果进行分页和排序。只需将可传页的页面传递到JPA存储库,然后返回所需的页面即可。

由于某种原因,当按名字排序时,有可能出现重复的条目,但前提是多个条目具有相同的名字。但是,按lastName排序永远不会发生。两者都是实体中的简单字符串,除了属性名称之外,没有其他区别。

您有没有遇到过这种情况,如果遇到这种情况,您如何解决?

编辑:为明确起见,在控制器和存储库之间基本上没有我的逻辑。我只是通过分页器并返回结果。

编辑2:解决!有趣的标题:仅在按名字排序时才出现此问题的原因是,始终只有记录出现在第1页和第2页上,而不管条目的排序方式如何。幸运的是,我们的测试人员使用了特定的测试数据,否则我可能从未注意到。

1 个答案:

答案 0 :(得分:3)

是的,我已经看到:一条记录​​可以出现在第1页上,然后再出现在第2页上。

这是数据库级别的问题。例如,每页10个项目以及位置10和11处的项目具有相同的属性值,那么可以随机选择哪个结果出现在每个结果集中的哪个位置。

因此,对唯一属性(例如数据库ID)应用辅助排序,以确保跨请求进行一致的排序。