Hibernate Criteria 排序和分页不起作用

Hibernate Criteria ordering and pagination not working

我在使用 criteria.addOrder(Order.asc("sortAttribute")) 非唯一 属性进行排序时发现了一个奇怪的行为。返回的结果是重复的。

当 sortAttribute 是数据库中的唯一键时,工作正常

resultObj = criteria.addOrder(order)
                        .setFirstResult(page.getPageNumber() * page.getPageSize())
                        .setMaxResults(page.getPageSize())
                        .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
                        .list();

此外,我在两个实体之间确实有一个连接。 (虽然我真的不明白为什么这可能是不稳定行为的任何原因)

好吧,我想我找到了解决这个问题的办法。我做了以下以获得预期结果:

  • 首先按非唯一键排序。
  • 然后按唯一键排序。

通过这种方式,结果始终处于正确的顺序,并确保了排序和分页。

希望这可以帮助遇到此类问题的人。