Spring Data JPA @Query
Neste post vou mostrar como usar o @Query do Spring Data JPA e como criar Select nativo com @Query
Ú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 a1
.
@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.