No contexto do Spring Data JPA, analise a declaração a seguir. public interface UserRepository extends JpaRepository<User, Long> { @Query("select codigo from User u where u.emailAddress = ?1") User findByEmailAddress(String emailAddress); } Supondo-se que todas as definições complementares à declaração foram devidamente estabelecidas, é correto afirmar que o trecho ‘?1’ expressa:
- A)uma referência a uma variável de ambiente declarada e definida no Spring Data JPA;
Errada, porque ?1 não indica variável de ambiente nem configuração externa do Spring.
- B)uma expressão regular a ser aplicada na execução do comando ‘select’;
Errada, pois ?1 não é expressão regular e não tem relação com validação de padrão no select.
- C)um código que estabelece o uso da cláusula LIKE na execução do comando ‘select’;
Errada, porque o operador LIKE é escrito explicitamente na consulta e não é representado por ?1.
- D)um código que provoca o disparo de um prompt para coletar o valor a ser utilizado na execução do comando ‘select’;
Errada, já que ?1 não dispara prompt nenhum; ele apenas recebe um valor passado ao método.
- E)o valor de um parâmetro utilizado na invocação do método associado à consulta.
Certa, porque ?1 representa o primeiro parâmetro do método associado à consulta, usado na execução da query.
Gabarito: E
No Spring Data JPA, a anotação @Query permite escrever consultas JPQL manualmente, e os parâmetros podem ser passados por posição ou por nome. Quando você vê algo como ?1, isso significa o primeiro argumento recebido pelo método que vai executar a consulta. É como dizer: "use o valor que entrou na primeira posição da chamada". Simples, direto e muito usado para ligar o método da interface ao valor informado pelo código.