Spring-data JPAでは、本質的にlikeで検索するメソッドクエリを作成する方法はありますか?
私は次のメソッドクエリを持っています
public MakeModel findByModelIgnoreCase(String model);
私が本当に欲しいのは、似たような表現です。 Criteriaまたは@Queryアノテーションを作成する必要がありますか?質問しすぎですか?
//Stupid example of what I want to be able to do
public MakeModel findByFuzzyModelIgnoreCase(String model);
本当にその核心は、テーブル検索をしたいと思います。 Spring Dataの下でHibernateを使用しているので、HibernateSearchのような検索APIを使用できると思います。私はここで推奨事項を受け入れています。
Likeもサポートされています:
MakeModel findByModelLikeIgnoreCase(String model);
メソッドを呼び出すときは、次のように使用します。最初に"%"
を追加して、厳密な開始一致である必要はないことを伝えます。最後に同じであるか、またはそれらの1つを使用できます。あなたが望むように。
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 .
「%」を手動で追加したくない場合は、次のクエリメソッドを使用できます。
MakeModel findByModelStartingWithIgnoreCase(String model); //SQL => LIKE 'model%'
MakeModel findByModelEndingWithIgnoreCase(String model); //SQL => LIKE '%model'
MakeModel findByModelContainingIgnoreCase(String model); //SQL => LIKE '%model%'