Метод репозитория SpringData JPA Запрос с похожим?

В Spring -data JPA, есть все равно, чтобы создать запрос метода, который по существу выполняет поиск как?

У меня есть следующий запрос метода

public MakeModel findByModelIgnoreCase(String model);

То, что я действительно хочу, похоже на выражение. Нужно ли просто создавать критерии или аннотацию @Query? Я слишком много спрашиваю?

   //Stupid example of what I want to be able to do

    public MakeModel findByFuzzyModelIgnoreCase(String model);

В самом деле, я считаю, что я хочу сделать поиск в таблице. Я использую Hibernate под Spring Data, поэтому, я думаю, я мог бы использовать некоторый поиск api, например Hibernate Search. Я открыт для рекомендаций здесь.

Ответы

Ответ 1

Как и поддерживается:

MakeModel findByModelLikeIgnoreCase(String model);

Когда вы вызываете метод, используйте следующее: Добавьте "%" в начале, чтобы сказать, что это не имеет значения, чтобы быть строгим стартовым совпадением, то же самое в конце, или вы можете использовать один из них, это зависит от того, что вы хотите.

MakeModel makeModel = findByModelLikeIgnoreCase("%"+model+"%");

если ваша модель make test, а строка для сравнения - "%"+model+"%", тогда:

es is a match , T is a match , test is a match  

строка для сравнения с model+"%":

te is a match , es is not .

Ответ 2

Если вы не хотите добавлять "%" вручную, вы можете использовать следующие методы запроса:

MakeModel findByModelStartingWithIgnoreCase(String model); //SQL => LIKE 'model%'
MakeModel findByModelEndingWithIgnoreCase(String model); //SQL => LIKE '%model'
MakeModel findByModelContainingIgnoreCase(String model); //SQL => LIKE '%model%'