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

时间:2018-03-26 13:03:10

标签: mysql querydsl

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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