16

これは基本的にこれの反対です: Spring JPA でページ化された QueryDSL クエリを実行する方法は?

これは、findAll() メソッドを使用できないカスタム クエリ用です。

編集:

間違ったリンクを投稿しました。修正しました。

4

5 に答える 5

22

次のようなことができます: ただし、必ず 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())));
    }
}
于 2012-10-27T05:46:58.653 に答える
3
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()))
于 2020-11-27T04:57:25.517 に答える