Spring Data JPA @Query

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

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Spring Boot - TUTORIAL

Última atualização em: | 30870 Visualizações

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.


Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!