Spring JPA

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();
}