Как установить список, используя запрос на примере для фильтрации. ExampleMatcher или что-то еще? - PullRequest
0 голосов
/ 08 октября 2019

Я фильтрую значение «город», «роль» в фильтре. Я использую класс-обертку, поэтому не установка будет устанавливать ноль, и я могу использовать withIgnoreNullValues ​​()

Итак, я устанавливаю его в сущности

Employee emp = new Employee();
emp.setCity(city);
emp.setRole(role);
ExampleMatcher matcher = ExampleMatcher.matching().withIgnoreNullValues();
Example<Employee> criteria = Example.Of(emp, matcher);
Page<Employee> employeesList = employeeRepository.findAll(criteria, pageable);

Это работает, как ожидалось. Но теперь я хочу найти несколько ролей.

Значит, я пришлю «Менеджер», «Кассир» для роли и город «Дели». Таким образом, он должен показать всех сотрудников, имеющих Дели в качестве города, а роль менеджера или кассира

Я не смог найти никакого решения. По запросу это возможно, но я использую его для временной цели

Для нескольких ролей

SELECT e FROM Employee e 
WHERE (e.role IN (:roles) OR  nullif(CHOOSE(1,:roles),'') IS NULL) AND (e.city = :city OR :city IS NULL)    

Любое другое хорошее решение?

...