Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre SpringData

Digamos que nós precisemos criar um método que realize uma consulta bem específica, tipo: "Traga todos os produtos com valor entre X e Y que foram entregues entre determinado período...." Isso provavelmente não conseguiríamos implementar apenas na assinatura do método da interface, teríamos que criar um método com uma query JPA e etc... Minha dúvida é... Onde eu colocaria esse método, teria como chamar este método criado através do PedidoRepository que foi injetado no controller??

1 resposta
solução!

No Spring Data vc pode anotar os métodos com @Query e passar tanto queries JPQL quanto queries nativas:

    @Query("select p from Pedido p join p.user u where u.username = :username")
    List<Pedido> findAllByUsuario(@Param("username")String username);

No caso de queries nativas só precisaria adicionar o atributo

@Query(nativeQuery = true, value ="select * from ..."

Agora se for necessário algo mais complexo ainda, com Criteria ou algo assim, vc poderia criar uma classe com a(s) constulta(s) e anotá-la com @Service, dai vc injeta no controller da mesma forma que injetou o repositório.