web-dev-qa-db-ja.com

Spring Data JPAリポジトリメソッドクエリのようなもの?

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を使用できると思います。私はここで推奨事項を受け入れています。

16
chrislhardin

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 .
21
Rafik BELDI

「%」を手動で追加したくない場合は、次のクエリメソッドを使用できます。

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