【问题标题】:Duplicate results when sorting using a Spring-Data pageable object on a JPA repository使用 JPA 存储库上的 Spring-Data 可分页对象进行排序时出现重复结果
【发布时间】:2018-11-22 15:05:46
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 这就是问题所在。我真的很生气,我花了这么长时间才看到它......回想起来,显然没有理由在多个请求中一致地对具有相同键的条目进行排序:D 谢谢!
  • Spring 中是否有一种机制可以让我始终将 ID 附加为最后一个排序属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
  • 2012-06-18
  • 2018-04-15
相关资源
最近更新 更多