Есть ли в любом случае весной JPA объединить «содержать» и «или» semanti c (содержит один из) в запросе? - PullRequest
0 голосов
/ 22 февраля 2020

Я бы хотел предоставить простой поисковый API для моего приложения. API имеет подпись, такую ​​как:

List<Blog> search(List<String> keywords);

Он принимает список ключевых слов и возвращает все блоги, заголовок которых содержит кого-либо из списка ключевых слов.

Как правило, на стороне базы данных я хочу реализовать semanti c вроде:

select * from blog where blog.title like `%keyword1` or blog.title like `%keyword2` or ...

* sql имеет длину c variadi.

Есть ли весной jpa для выполнения sh this?


Я читал пост, например: JPA "содержит один из" , но он отличается от того, что мне нужно, так как я хочу, чтобы строка содержала, но не "in".

1 Ответ

0 голосов
/ 22 февраля 2020

Вместо этого можно использовать регулярное выражение с ключевыми словами, объединенными в шаблон:

String pattern = String.join("|", keywords);
pattern = String.format(".*(%s)", pattern);

, а затем:

SELECT * FROM blog WHERE blog.title REGEXP `pattern`
...