이것은 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]}를 사용하여 두 번째 매개 변수에 액세스 할 수 있습니다. 동일한 결과를 얻을 수있는 또 다른 방법은 "(
@Query("Select u.email from User u where u.email= :#{#email}")
Optional<String> getEmail(@Param("email") String email);
그래서 당신은
그것이 @query'과 동일하지 않습니다 하나 또는 다른 방법을 사용할 수있는 파라미터 : 방법을 통해 명명 된 대한 액세스를 사용하는 것 사용자 u에서 u.email을 선택하시오. u.email =? 0 ")'및'@Query ("User u에서 u.email을 선택하십시오. u.email = : email)'? – DimaSan
@Dimasan, 맞습니다. 코드 고양이를 '스킨'하는 데는 여러 가지 방법이 있습니다. :) – alainlompo