Spring Data запрос DSL, как добавить порядок по? - PullRequest
0 голосов
/ 03 октября 2018

Я новичок в 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 голосов
/ 03 октября 2018

Добавьте метод в интерфейс вашего репозитория

findByStatus(status)

Затем используйте блок кода, как показано ниже

Pageable pageable = new PageRequest(offset, limit, Direction.DESC, "updatedAt");
repository.findByStatus(status, pageable);

, если вы используете весеннюю загрузку 2.0.0 =>, тогда используйте метод

PageRequest.of(....)
0 голосов
/ 03 октября 2018

Спасибо всем, наконец, это решение работает для меня:

 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()));   
0 голосов
/ 03 октября 2018

Вы можете добавить сортировку на свою страницу информации:

 Sort sort = new Sort.Order(Sort.Direction.ASC,"filedname").nullsLast();
 PageRequest pageRequest = new PageRequest(pageNumber, pageSize, sort);
 personInventoryRepository.findAll(query,pageRequest); 
...