繁体   English   中英

使用 JPA 存储库上的 Spring-Data 可分页对象进行排序时出现重复的结果

[英]Duplicate results when sorting using a Spring-Data pageable object on a JPA repository

我有一个rest-api,它在调用时返回用户列表。 API 使用 org.springframework.data.domain.Pageable 对结果进行分页和排序。 这通过简单地将可分页传递给 JPA 存储库,然后返回所需的页面来工作。

出于某种原因,当按名字排序时,可能会出现重复条目​​,但前提是多个条目具有相同的名字。 但是,在按姓氏排序时不会发生这种情况。 两者都只是实体中的字符串,除了属性名称之外没有明显的区别。

你们有没有遇到过这种情况,如果有,你们是如何解决的?

编辑:澄清一下,控制器和存储库之间基本上没有我的逻辑。 我只是通过可分页并返回结果。

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

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

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

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

在基于 id 进行二次排序后,问题对我来说是固定的。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM