2017-06-07 3 views
1

私はProfileとそのJPAリポジトリProfileRepoというクラスがあります最初にfindByメソッドを使用して名前を検索しようとしています名前またはミドルネームまたはラストネームを使用し、contains句も使用します。複数のフィールドにfindByを使用し、すべてのフィールドにContaining句を使用するSpring Data JPAメソッドとは何か

public class Profile{ 
    private String firstName; 
    private String middleName; 
    private String lastName; 

    //getters and setters 
} 

アムJPAリポジトリで次のクエリを使用していますが、

List<Profile> findByLastNameContainingOrFirstNameContainingOrMiddleNameContainingAllIgnoreCase(String firstName, 
     String lastName,String midName); 

が親切に手伝っ方法を受け付けていません。

+0

https://stackoverflow.com/questions/44410660/spring-data-error-generating-query-from-method-name – PeaceIsPearl

+1

仕様を正しく守り、最初に単純なクエリを試してみると、@ Queryを使う代わりに、あなたの仕様に合った方法があるかもしれません。 –

+0

このようなもの:@Query(「ユーザーuからuを選択します.u.firstname =:firstnameまたはu.lastname =:lastname」 ユーザーfindByLastnameOrFirstname(@Param( "lastname")文字列の姓 @Param( "firstname ")文字列名); – PeaceIsPearl

答えて

1

このお試しください:

List<Profile> findByFirstNameIgnoreCaseContainingOrLastNameIgnoreCaseContainingOrMidNameIgnoreCaseContaining(String firstName, String lastName, String midName); 

またはこれを:

@Query("select p from Profile p where upper(p.firstName) like concat('%', upper(?1), '%') or upper(p.lastName) like concat('%', upper(?2), '%') or upper(p.midName) like concat('%', upper(?3), '%')") 
List<Profile> getByNames(String firstName, String lastName, String midName); 
+0

私はちょっと似たような@Query "SELECT p FROMプロファイルp WHERE p.firstName LIKE CONCAT( '%'、:名前、 '%')またはp.lastName LIKE CONCAT( '%'、:名前、 '%') またはp.middleName LIKE CONCAT '%'、:name、 '%')」) \tリスト findByName(@Param( "name")文字列入力); – user2632905

+0

ありがとう@ Cepr0最初の1つは実際に働いたので、私は質問を書くことを避けました。 – user2632905

関連する問題