Это поддержка Spel в jpql. ? # {[0]} означает индексированный доступ к параметрам метода вместо использования именованного доступа. Таким образом, он представляет параметр электронной почты, который передается вашему методу getEmail: параметр с индексом 0, другими словами, ваш первый параметр, если ваша сигнатура метода была, например,
Необязательный getServiceEmail (String email, int officeId);
Вы можете получить доступ к второму параметру, используя ? # {[1]} со следующего
@Query("Select u.email from User u where u.email= ?#{[0]} and u.officeId=?#{[1]} ")
Optional<String> getServiceEmail(String email, int officeId);
. Другой способ получить тот же результат, что бы использовать именованные-доступ с помощью метода @param
@Query("Select u.email from User u where u.email= :#{#email}")
Optional<String> getEmail(@Param("email") String email);
Таким образом, вы можете использовать один или другой подход
Разве это не то же самое, как '@Query (» Выберите u.email от пользователя u, где u.email =? 0 ")' и '@Query (« Выберите u.email от пользователя u, где u.email =: email) '? – DimaSan
@Dimasan, да, он дает тот же результат Есть часто много способов «скинуть» кодовый код :) – alainlompo