QueryDSL: Универсальный предикат в BaseRestCrudController

#spring-boot #rest #querydsl

Вопрос:

Я разрабатываю типичный CRUD для Api REST.

Для этого у меня есть универсальный контроллер с логикой и другими субконтроллерами, которые расширяют предыдущий. Проблема в том, что если я попытаюсь использовать предикат QueryDSL для предварительных фильтров, я не знаю, как можно обойтись без переопределения основного метода.

До сих пор это то, что у меня есть.

Базовый микроконтроллер

 @GetMapping("/list") public ResponseEntitylt;MappingJacksonValuegt; findAll(  String fields, Predicate predicate, Pageable pageable) {  log.info("List");  return new ResponseEntity(  FilterUtils.getResults(  fields, getFilterName(), getCRUDService().findAll(predicate, pageable)),  HttpStatus.OK); }  

пример1контроллер расширяет базовый контроллер

 @Override public ResponseEntitylt;MappingJacksonValuegt; findAll(  @RequestParam(value = Constants.FILTER_PARAMETER, required = false) String fields,  @QuerydslPredicate(root = Example1.class) Predicate predicate,  Pageable pageable) {  return super.findAll(fields, predicate, pageable); }  

Example2Controller расширяет базовый контроллер

 @Override public ResponseEntitylt;MappingJacksonValuegt; findAll(  @RequestParam(value = Constants.FILTER_PARAMETER, required = false) String fields,  @QuerydslPredicate(root = Example2.class) Predicate predicate,  Pageable pageable) {  return super.findAll(fields, predicate, pageable); }  

Я хотел бы получить что-то подобное:

Базовый микроконтроллер

 @GetMapping("/list") public ResponseEntitylt;MappingJacksonValuegt; findAll(  @RequestParam(value = Constants.FILTER_PARAMETER, required = false) String fields,, @QuerydslPredicate(root = getEntityClass()), Pageable pageable) {  log.info("List");  return new ResponseEntity(  FilterUtils.getResults(  fields, getFilterName(), getCRUDService().findAll(predicate, pageable)),  HttpStatus.OK); }  

Может ли кто-нибудь сказать мне, возможно ли это?

С уважением