我不熟悉QueryDslPredicate
和PagingAndSortingRepository
我想在findAll请求中使用谓词以及排序和分页。怎么办呢?
QTestOrder qTestOrder = QTestOrder.testOrder;
BooleanExpression isUser = qTestOrder.user.eq(userDAO.getUserByPhone(Long.parseLong(params.getFirst(Constant.USER))));
BooleanExpression isId = qTestOrder.id.eq(new Long(params.getFirst(Constant.ID)));
BooleanExpression isStatus = qTestOrder.testStatus.eq(testStatusDAO.getByRank(Integer.parseInt(params.getFirst(Constant.STATUS))));
testOrderRepo.findAll(isUser.or(isId).or(isStatus),qTestOrder.orderCreationTime.desc());
所以上面返回我的testOrders列表,我现在想要使用下面的查询进行分页。如何根据查询返回所有分页和排序的用户。有什么方法可以解决这个问题或解决方法吗?
Pageable page = new PageRequest(p, Constant.DEFAULT_PAGE_SIZE);
Page<TestOrder> l = testOrderRepo.findAll(page);
答案 0 :(得分:0)
您可以在存储库界面中实现broadcasts_viewers(broadcast_id)
。此接口提供了具有以下签名的方法:
QueryDslPredicateExecutor<T>
返回与给定Page<T> findAll(Predicate predicate, Pageable pageable);
匹配的实体页面。
假设您有域实体,比如Predicate
,那么您可以定义TestOrder
,如下所示:
TestOrderRepository
最后你可以:
public interface TestOrderRepository extends QueryDslPredicateExecutor<TestOrder> {}