Bom dia,
Estou desenvolvendo uma aplicação utilizando o Spring com Hibernate, JPA, gostaria de fazer uma consulta personalizada retornando os dados para uma classe model sem a anotação @entity, seria possível?
Segue abaixo exemplos das classes criadas.
Spring JPA
R
3 Respostas
V
@rudgieri
bom dia, tem jeito sim…é feio mas funciona…rsrsrsrs
Porém o repository só funciona com classes de entidade, vc pode montar queries com JPQL que vai funcionar tranquilo usando a classe que tem todos esses relacionamentos. Eu vou montar um exemplo imaginando os relacionamentos.
Para fazer uso de resultados de tabela sem nenhuma entidade vc precisa criar uma implementação customizada e injetar o DataSource para poder pegar a Connection e criar uma consulta nativa que vai obedecer a nomenclatura dos campos. Isso com spring até onde eu conheço não rola.
@Entity
@Table(name = "protocolo")
public class Protocolo {
@Id
private Long id;
private Date emissao;
@OneToOne
private Departamento departamento;
//getters and setters
}
public class ConsultaPersonalizada {
private Long id;
private Date emissao;
private String descricao;
public ConsultaPersonalizada (Long id, Date emissao, String descricao){
this.id = id;
this.emissao = emissao;
this.descricao = descricao;
}
//getters and setters
}
@Repository
public interface ConsultaPersonalizadaRepository extends <Protocolo, Long> {
@Query(value = "SELECT new com.exemplo.ConsultaPersonalizada(p.id, p.emissao, p.departamento.descricao) FROM Protocolo AS p WHERE p.loja_id = ?1")
List<ConsultaPersonalizada> consultaPerson(Long loja);
}
R
@Villagram
Obrigado pela ajuda, após algumas pesquisas, consegui resolver utilizando jdbc no spring.
L
Você conseguiria também utilizando uma interface:
Consulta
@Query(
"SELECT
p.id AS \"id\",
p.emissao AS \"emissao\",
d.descricao AS \"descricao\"
FROM ...")
List<SuaInterface> consulta(Long codLoja);
Interface
public interface SuaInterface {
Long getId();
LocalDateTime getEmissao();
String getDescricao();
}
Criado 28 de maio de 2020
Ultima resposta 28 de mai. de 2020
Respostas 3
Participantes 3
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Back-end Java: Microsservicos, Spring Boot e Kubernetes Por Eduardo Felipe Zambom Santana — Casa do Codigo



