Метод репозитория 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%'