Spring Data JPA @Query

Postado em por Wolmir Cezer Garbin em Spring Boot | 73 Visualizações
Última atualização em:

Neste post vou mostrar como usar o @Query do Spring Data JPA e como criar Select nativo com @Query

Todo mundo tem algo para vender, AnuncieOn.com o melhor site de anúncios grátis de todo o Brasil. ABRIR

Uma das formas que o Spring Data prove para executar query é o @Query. Com o @Query é possível executar tanto SQL nativo e JPQL. Neste post vou mostrar como usar ambos os métodos.

Considere a classe abaixo:

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "PERGUNTA")
@Getter
@Setter
public class Pergunta implements Serializable {
  
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;
  
   private String pergunta;

   private Integer ativo;
  
}

Note que estamos usando lombok para criar os getters e setters. Se quiser saber mais sobre o lombok acesse: Como usar o Lombok em projetos Java.

Considerando o mapeamento da tabela Pergunda, teremos a seguinte interface que estende de CrudRepository.

import org.springframework.data.repository.CrudRepository;

public interface PerguntaData extends CrudRepository<Pergunta, Long> {
  
}

Voltando ao @Query do Spring Data temos:

@Query com JPQL

Veja um método simples que retorna entidades ativas de pergunta do banco de dados:

@Query("select p from Pergunta p where p.ativo = 1")
List<Pergunta> findAllAtivas();

Note que dessa forma teremos o retorno de todas as entidades que estiverem com o campo ativo igual a 1.

@Query com SQL

Outra forma que pode ser utilizada o @Query, é passando instruções em SQL nativo.

Para isso veja o exemplo:

@Query(value = "select * from pergunta where ativo = 1", nativeQuery = true)
List<Pergunta> findAllAtivas();

Note que, para passar instruções nativas é necessário indicar com o atributo nativeQuery que foi criado uma query nativa.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores


Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar