1
resposta

Erro 500 (The given id must not be null!)

O erro acontece quando envio a oferta e está na minha classe OfertaRest, mais precisamente nesta linha:

Optional<Pedido> pedidoBuscado = repository.findById(novaOfertaRequest.getPedidoId());

Minha classe OfertaRest:

public class OfertaRest {
    @Autowired
    private PedidoRepository repository;

    @PostMapping
    public Oferta criaOferta(NovaOfertaRequest novaOfertaRequest) {
        Optional<Pedido> pedidoBuscado = repository.findById(novaOfertaRequest.getPedidoId());

        if (!pedidoBuscado.isPresent()) {
            return null;
        }

        Pedido pedido = pedidoBuscado.get();
        Oferta oferta = novaOfertaRequest.toOferta();

        oferta.setPedido(pedido);
        pedido.getOfertas().add(oferta);

        repository.save(pedido);

        return oferta;
    }
}

Minha classe RequisicaoNovaOferta:

package br.com.mvc.gumudi.dto;

import br.com.mvc.gumudi.model.Oferta;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class NovaOfertaRequest {
    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    private Long pedidoId;
    private String valor;
    private String dataDaEntrega;
    private String comentario;

    public Long getPedidoId() {
        return this.pedidoId;
    }

    public void setPedidoId(Long pedidoId) {
        this.pedidoId = pedidoId;
    }

    public String getValor() {
        return valor;
    }

    public void setValor(String valor) {
        this.valor = valor;
    }

    public String getDataDaEntrega() {
        return dataDaEntrega;
    }

    public void setDataDaEntrega(String dataDaEntrega) {
        this.dataDaEntrega = dataDaEntrega;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public Oferta toOferta() {
        Oferta oferta = new Oferta();

        oferta.setValor(new BigDecimal(this.valor));
        oferta.setDataDaEntrega(LocalDate.parse(this.dataDaEntrega, formatter));
        oferta.setComentario(this.comentario);

        return oferta;
    }
}

Minha classe Oferta:

@Entity
public class Oferta {

     @Id @GeneratedValue (strategy = GenerationType.IDENTITY)
     private Long id;
     private BigDecimal valor;
     private LocalDate dataDaEntrega;
     private String comentario;
     @ManyToOne(fetch = FetchType.LAZY)
     private Pedido pedido;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    public LocalDate getDataDaEntrega() {
        return dataDaEntrega;
    }

    public void setDataDaEntrega(LocalDate dataDaEntrega) {
        this.dataDaEntrega = dataDaEntrega;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public Pedido getPedido() {
        return pedido;
    }

    public void setPedido(Pedido pedido) {
        this.pedido = pedido;
    }
}

Alguém pode me ajudar por favor?

1 resposta

Estava com o mesmo erro. Encontrei um link com três sugestões para corrigir o erro. Irei te enviar o a solução do meu para vê se encaixa no teu problema.

https://cursos.alura.com.br/forum/topico-erro-500-em-nova-oferta-141503

no link da solução tem outro link com as três soluções ditas acima