2
respostas

Erro ao Usar o @ Query

Boa tarde

Tentei utilizar o @Query, porém retornou mensagem indicando não estar mapeado.

O objetivo era retornar os mesmos dados da consulta feita com page, conforme abaixo:

public interface PerfilRepository extends JpaRepository<Perfil, Integer>{

Perfil findById(String perfilId);
Optional<Perfil> findById(Perfil id);
Page<Perfil> findByTimeId(Long timeId, Pageable paginacao);

@Query("SELECT p FROM Perfil p where p.time.id = :timeId")
List<Perfil> findPerfisDoTime(@Param("timeId") Long timeId);

}

O retorno que estou recebendo no log é: Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Perfil is not mapped [SELECT p FROM Perfil p where p.time.id = :timeId]

2 respostas

Oi Marcos,

Pelo erro o problema é que sua classe Perfil não está mapeada como Entidade da JPA.

Confere se essa classe está anotada com @Entity e se o import dessa anotação vem do pacote da JPA(javax.persistence).

Olá, Rodrigo. Obrigado pelo retorno.

A classe Perfil está marcada adequadamente e o import vindo do javax.persistence.

Agora funcionou passando o nome da tabela ao invés do nome da classe.

A classe Perfil está assim:

import javax.persistence.Entity;

@Entity(name="roles_config")
public class Perfil {
...
} 

Para funcionar, tive que deixar método da PerfilRepository da seguinte forma:

    @Query(value="SELECT p FROM roles_config p where p.time.id = :timeId and p.status = 1")
    Page<Perfil> findPerfisAtivosDoTime(@Param("timeId") Long timeId, Pageable paginacao);

Att Marcos

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