Spring数据查询DSL如何添加顺序?

时间:2018-10-03 13:08:36

标签: java spring spring-data-jpa spring-data querydsl

我是queryDsl的新手,我正在研究Spring数据查询dsl以创建动态过滤器,我使用以下接口: QueryDslPredicateExecutor ,因此我可以使用不同的实体字段过滤数据,现在我想要基于 BooleanExpression

向我的查询添加订单

这是我的代码:

 QPersonData _personInventory = QPersonData.personData;
 BooleanBuilder query = new BooleanBuilder(); 

 query.and(_personInventory .status.eq(status));

然后我使用查询调用存储库接口:

personInventoryRepository.findAll(query,pageable);   

我的问题是如何根据实体上的不同字段将订单应用于查询对象?

3 个答案:

答案 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()));