2016-10-18 6 views

答えて

2

これはjpqlでのSpELサポートです。 ?#{[0]}は、名前付きアクセスを使用する代わりにメソッドパラメータへのインデックス付きアクセスを意味します。したがって、getEmailメソッドに渡される電子メールパラメータを表します。つまり、インデックスが0のパラメータ、つまり、メソッドのシグニチャがたとえば最初のパラメータの場合は

オプションgetServiceEmail(String email、int officeId);

は次

@Query("Select u.email from User u where u.email= ?#{[0]} and u.officeId=?#{[1]} ") 
Optional<String> getServiceEmail(String email, int officeId); 

?#{[1]}を使用して第2のパラメータにアクセスすることができます。同じ結果を得るための別の方法は、「(

@Query("Select u.email from User u where u.email= :#{#email}") 
Optional<String> getEmail(@Param("email") String email); 

ですから、

+0

はそれが@query 'と同じではありません、どちらか一方のアプローチを使用することができます@Paramメソッドを介して名前のアクセスもを使用することですu.email =?0 ")'と '@Query(u.email =:emailのUser uからu.emailを選択)'? – DimaSan

+1

@Dimasan、はい、同じ結果を返しますコード猫のスキンケアには多くの方法があります:) – alainlompo

関連する問題