Каково лучшее решение для фильтрации результатов в Spring Data JPA со многими свойствами?

У меня есть случай для таблицы продуктов, которая должна быть отфильтрована по пользовательским данным, таким как категория, цвет, размер, диапазон цен и многое другое.

Я использую Spring Data JPA и доволен его производным запросом от имени метода, и когда меня заставляют, я просто использую опцию @query для более сложных запросов, таких как объединения и ...

Но для метода Filter, который мне нужен, я боюсь, что я должен написать что-то вроде этого

public interface ProductRepository extends JpaRepository<Product, Long> {
   //..... other methods

Page<Product> findByCategoriesContainingAndSalepriceBetween(List<Category> categories, Float minprice, Float maxprice, PageRequest pagerequest);

Page<Product> findByCategoriesContaining(List<Category> categories, PageRequest pagerequest);

Page<Product> findByCategoriesContainingAndSizeIn(List<Category> categories,Int[] sizes, PageRequest pagerequest);

Page<Product> findByCategoriesContainingAndSizeInAndSalepriceBetween(List<Category> categories,Float minprice, Float maxprice, PageRequest pagerequest);

}

кажется, добавление некоторых других полей заставит меня написать так много разных комбинаций

поэтому я посмотрел на QueryDsl и Specification, но они кажутся лишним кодом, не могли бы вы указать мне правильный путь ??

Ответы на вопрос(1)

Ваш ответ на вопрос