0
@Query("Select u.email from User u where u.email= ?#{[0]}")
Optional<String> getEmail(String email);
私の質問は、これは何ですか??#{[0]}
というのは、クエリが電子メールを返すはずですが、この文字列の意味はわかりますか?jpqlのこの文字列はどういう意味ですか?
@Query("Select u.email from User u where u.email= ?#{[0]}")
Optional<String> getEmail(String email);
私の質問は、これは何ですか??#{[0]}
というのは、クエリが電子メールを返すはずですが、この文字列の意味はわかりますか?jpqlのこの文字列はどういう意味ですか?
これは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);
ですから、
はそれが@query 'と同じではありません、どちらか一方のアプローチを使用することができます@Paramメソッドを介して名前のアクセスもを使用することですu.email =?0 ")'と '@Query(u.email =:emailのUser uからu.emailを選択)'? – DimaSan
@Dimasan、はい、同じ結果を返しますコード猫のスキンケアには多くの方法があります:) – alainlompo