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.
@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);
}
@Villagram
Obrigado pela ajuda, após algumas pesquisas, consegui resolver utilizando jdbc no spring.
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();
}



