2
respostas

Não tem como usar JPQL em Projection?

O instrutor usou como exemplo de Projection uma query nativa

A query deve retornar apenas alguns campos, id, nome, salario:

@Query(value = "SELECT f.id, f.nome, f.salario FROM funcionarios f", nativeQuery = true)
    List<FuncionarioProjection> findFuncionarioIdNomeSalario();

Eu pensei: "Deve ser melhor usar o jpql sempre que possível pra independer de qual banco minha aplicação vai rodar"

    @Query("SELECT f.id, f.nome, f.salario FROM Funcionario f")
    List<FuncionarioProjection> findFuncionarioIdNomeSalario1();

Porém essa query sempre me retorna null, queria entender o pq isso ta acontecendo

2 respostas

Estou com a mesma dúvida. Aguardando a moderação se pronunciar....????!!!!!

Também pensei nisso e comecei a testar algumas coisas.

Descobri que ao utilizar JPQL, nós devemos utilizar "aliases" para a consulta funcionar.

Segue o código:

@Query("SELECT f.id AS id, f.nome AS nome, f.salario AS salario FROM Funcionario f")
List<FuncionarioProjecao> findFuncionarioProjecao();

Se habilitar o log do SQL, verá que ele faz a busca nos campos desejados. Agora, por que precisamos inserir um alias é um mistério.

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software