Я пытаюсь изучить QueryDSL, чтобы вернуть результаты одного поискового запроса из Postgres:
@GetMapping("/product/contains/{matchingWords}")
public List<ProductModel> findByTitleContaining(@PathVariable String matchingWords) {
QProductModel product = QProductModel.productModel;
JPAQuery<?> query = new JPAQuery<>(em);
List<ProductModel> products = query.select(product)
.from(product)
.where(product.title.toLowerCase()
.contains(matchingWords.toLowerCase()))
.fetch();
return products;
}
Но я также хочу найти любое количество поисковых запросов, например: скажем, это мой список поисковых терминов, разделенных символом плюса:
String[] params = matchingWords.split("[+]");
Как я могу динамически создать содержит (параметры [0]) И / ИЛИ содержит (параметры [1] И / ИЛИ ... содержит (params [n]) с использованием QueryDSL или любой инфраструктуры запросов Java / Spring? Я вижу, что QueryDSL имеет систему предикатов, но я все еще не понимаю, как динамически создавать запрос на основе переменного числа поиск параметров в одном столбце.