Как найти подстроку через CrudRepository

Необходимо написать метод, который ищет содержание заданной подстроки в поле. Если использовать просто findByContent (к примеру) то ищется полное совпадение, когда как в моем случае, необходимо найти contains а не equals.

public interface EntryRepo extends CrudRepository<Entry, Integer> {
List<Entry> findByContent(String content);
List<Entry> findByTitle(String title);
List<Entry> findById(int id);

}


Ответы (2 шт):

Автор решения: Антоша

Напишите свой запрос

@Query("SELECT * FROM Table WHERE name LIKE %:key% OR desc LIKE %:key%", nativeQuery = true)
List<Entry> findByKeyword(@Param("key") String key);

Что то в этом духе

→ Ссылка
Автор решения: Иван Луполов

Если вы используете Spring Data JPA, то для создания нужного вам запроса из имени метода, нужно использовать такие ключевые слова как StartingWith, EndingWith и Containing. Т.е. ваш метод будет следующим:

List<Entry> findByContentContaining(String partOfContent);

StartingWith соответствует SQL where content like partOfContent%

EndingWith соответствует SQL where content like %partOfContent

Containing соответствует SQL where content like %partOfContent%

У Spring хорошая документация и обо всех ключевых словах для создания запросов из методов вы можете узнать из документации. Гуглить одно из самых важных умений программиста =)

→ Ссылка