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

Retorno da Api traz os dados do usuário (senha)

Diferente do mostrado na aula o meu retorno traz também os dados do usuário (inclusive a senha).

O que pode ser feito para não retornar

[{ "nomeProduto": "XXXXXXXXX", "valorNegociado": null, "dataEntrega": null, "urlProduto": "https://www.xxxxxxxx", "urlImagem": "https://xxxxxxxxxxxxx", "descricao": "xxxxxxxxxx", "status": "AGUARDANDO", "user": { "username": "Joao", "password": "$2a$10$zpxx/kR8Z4BeS0Oan5ZUkO7PbY/kVowKLByDe7uy40zvOFqTcdyOK", "enabled": true } }]

PedidosRest

package br.com.alura.mvc.mudi.api;

import br.com.alura.mvc.mudi.model.Pedido;
import br.com.alura.mvc.mudi.model.StatusPedido;
import br.com.alura.mvc.mudi.repository.PedidoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/api/pedidos")
public class PedidosRest {

    @Autowired
    private PedidoRepository pedidoRepository;

    @GetMapping("aguardando")
    public List<Pedido> getPedidosAguardandoOfertas(){

        Sort sort = Sort.by("id").descending();
        PageRequest paginacao = PageRequest.of(0, 10, sort);

        return pedidoRepository.findByStatus(StatusPedido.AGUARDANDO, paginacao);
    }

}

PedidoRepository

import br.com.alura.mvc.mudi.model.Pedido;
import br.com.alura.mvc.mudi.model.StatusPedido;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface PedidoRepository extends JpaRepository<Pedido, Long> {
    @Cacheable("pedidos")
    List<Pedido> findByStatus(StatusPedido statusPedido, Pageable sort);

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

    @Query("select p from Pedido p join p.user u where p.status = :status and u.username = :username")
    List<Pedido> findByStatusAndUser(StatusPedido status, @Param("username")String username);
}
1 resposta
solução!

Na classe "Pedidos" remova o getter e o setter da variável "User", dessa forma o spring não vai tentar gerar um json com essas informações.