これは基本的にこれの反対です: Spring JPA でページ化された QueryDSL クエリを実行する方法は?
これは、findAll() メソッドを使用できないカスタム クエリ用です。
編集:
間違ったリンクを投稿しました。修正しました。
これは基本的にこれの反対です: Spring JPA でページ化された QueryDSL クエリを実行する方法は?
これは、findAll() メソッドを使用できないカスタム クエリ用です。
編集:
間違ったリンクを投稿しました。修正しました。
次のようなことができます: ただし、必ず o.getProperty() をトリムして、"alias."+property ではなくプロパティのみを渡すようにしてください。
if (pageable != null) {
query.offset(pageable.getOffset());
query.limit(pageable.getPageSize());
for (Sort.Order o : pageable.getSort()) {
PathBuilder<Object> orderByExpression = new PathBuilder<Object>(Object.class, "object");
query.orderBy(new OrderSpecifier(o.isAscending() ? com.mysema.query.types.Order.ASC
: com.mysema.query.types.Order.DESC, orderByExpression.get(o.getProperty())));
}
}
private OrderSpecifier<?>[] getSortedColumn(Sort sorts){
return sorts.toList().stream().map(x ->{
Order order = x.getDirection().name() == "ASC"? Order.ASC : Order.DESC;
SimplePath<Object> filedPath = Expressions.path(Object.class, Qobject, x.getProperty());
return new OrderSpecifier(order, filedPath);
}).toArray(OrderSpecifier[]::new);
}
次に、次のように使用できます。
.where(...),
.orderBy(getSortedColumn(pageable.getSort()))