我是queryDsl的新手,我正在研究Spring数据查询dsl以创建动态过滤器,我使用以下接口: QueryDslPredicateExecutor ,因此我可以使用不同的实体字段过滤数据,现在我想要基于 BooleanExpression
向我的查询添加订单这是我的代码:
QPersonData _personInventory = QPersonData.personData;
BooleanBuilder query = new BooleanBuilder();
query.and(_personInventory .status.eq(status));
然后我使用查询调用存储库接口:
personInventoryRepository.findAll(query,pageable);
我的问题是如何根据实体上的不同字段将订单应用于查询对象?
答案 0 :(得分:2)
您可以在页面信息中添加排序:
Sort sort = new Sort.Order(Sort.Direction.ASC,"filedname").nullsLast();
PageRequest pageRequest = new PageRequest(pageNumber, pageSize, sort);
personInventoryRepository.findAll(query,pageRequest);
答案 1 :(得分:2)
在存储库界面中添加方法
findByStatus(status)
然后使用如下所示的代码块
Pageable pageable = new PageRequest(offset, limit, Direction.DESC, "updatedAt");
repository.findByStatus(status, pageable);
如果您使用的是Spring Boot 2.0.0 => 然后使用方法
PageRequest.of(....)
答案 2 :(得分:0)
最后,所有这些解决方案都对我有用:
QPersonData _personInventory = QPersonData.personData;
BooleanBuilder query = new BooleanBuilder();
query.and(_personInventory .status.eq(status));
personInventoryRepository.findAll(query,0, Integer.MAX_VALUE,new QSort(_personInventory.field1.asc(),_personInventory.field2.asc()));