2
respostas

Erro ao abrir o http://localhost:8080/api/pedidos/aguardando

Na hora de visualizar o Json no navegador, o ele lançou uma exception que eu nunca vi antes, já fiz o codigo da aula varias vezes e ainda continua dando um exception

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

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
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 br.com.alura.mvc.mudi.model.Pedido;
import br.com.alura.mvc.mudi.model.StatusPedido;
import br.com.alura.mvc.mudi.repository.PedidoRepository;

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

codigo da aula

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Exception

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Eu estava com o mesmo erro e no meu caso estava faltando o get /set do "pedidos" na classe User.

Edit 1 * Não foi suficiente... Agora está trazendo mutiplos pedidos repetidos e só depois de logar...

Edit 2 * Realmente não é essa a solução. Ele entra num looping por recursividade, e tirando o get/set o problema anterior persiste ...

Erro classe user faltando get/set de "pedidos"

Resolvi mudando o FetchType do user na classe Pedido.java para EAGER:

No Pedido.java

 @ManyToOne(fetch = FetchType.EAGER)
    private User user;

porém agora ele carrega dados do usuário, como usuário e senha, e entrega no JSON, então fiz uma alteração adicionando a anotação @JsonIgnore sobre os atributos que não quero que sejam adicionados ao JSON, como a senha do usuário, lá na classe User.java

Ou pode colocar o @JsonIgnore sobre o atributo User na classe Pedido.java:

@JsonIgnore
    @ManyToOne(fetch = FetchType.EAGER)
    private User user;

Espero que resolva para vocês também, e espero que isso não gere outro erro no futuro! kkk

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software