如何按 querydsl 中的字段位置排序?

How can I sort by field position in querydsl?

在 JPQL 中我可以使用以下 select u from Entity u order by u.field1, 1.
这确保后端 mysql 数据库将始终 return 结果完全相同的顺序(例如,如果 u.field1 有重复项)。
在位置 1,我始终保留 PK(id)。

如何使用 querydsl 实现同样的效果(使用位置排序)?

P.S。排序代码是动态生成的,因此我想避免将 PK 作为额外参数提供给 SortUtil 的要求。

据我了解,您的要求是按数据库列排序,然后按您作为参数提供的数字排序。我认为这会起作用,我已将 1L 传递给 Expressions.constant,但显然用动态生成的字段替换它。

.orderBy(someRelationalPathBase.field1.asc(), new OrderSpecifier<>(Order.ASC, Expressions.constant(1L)))