2016-10-18 2 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]}를 사용하여 두 번째 매개 변수에 액세스 할 수 있습니다. 동일한 결과를 얻을 수있는 또 다른 방법은 "(

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

그래서 당신은

+0

그것이 @query'과 동일하지 않습니다 하나 또는 다른 방법을 사용할 수있는 파라미터 : 방법을 통해 명명 된 대한 액세스를 사용하는 것 사용자 u에서 u.email을 선택하시오. u.email =? 0 ")'및'@Query ("User u에서 u.email을 선택하십시오. u.email = : email)'? – DimaSan

+1

@Dimasan, 맞습니다. 코드 고양이를 '스킨'하는 데는 여러 가지 방법이 있습니다. :) – alainlompo