Para as pessoas que estão com problemas de as ofertas sumirem depois que enviam uma oferta para o banco, a correção é o seguinte:
é necessário adiciona a anotação @jsonIgnore
nos atributos que tem a anotação @ManyToOne
nas seguintes classes:
- Pedido:
package com.vinicius.mvc.mudi.model;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
@Entity
public class Pedido {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nomeProduto;
private BigDecimal valorNegociado;
private LocalDate dataDaEntrega;
private String urlProduto;
private String urlImagem;
private String descricao;
@Enumerated(EnumType.STRING)
private StatusPedido status;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
private User user;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "pedido", fetch = FetchType.LAZY)
private List<Oferta> ofertas;
public Pedido(String nomeProduto, BigDecimal valorNegociado, LocalDate dataDaEntrega, String urlProduto,
String urlImagem, String descricao) {
this.nomeProduto = nomeProduto;
this.valorNegociado = valorNegociado;
this.dataDaEntrega = dataDaEntrega;
this.urlProduto = urlProduto;
this.urlImagem = urlImagem;
this.descricao = descricao;
}
public Pedido() {
}
public String getNomeProduto() {
return nomeProduto;
}
public void setNomeProduto(String nomeProduto) {
this.nomeProduto = nomeProduto;
}
public BigDecimal getValorNegociado() {
return valorNegociado;
}
public void setValorNegociado(BigDecimal valorNegociado) {
this.valorNegociado = valorNegociado;
}
public LocalDate getDataDaEntrega() {
return dataDaEntrega;
}
public void setDataDaEntrega(LocalDate dataDaEntrega) {
this.dataDaEntrega = dataDaEntrega;
}
public String getUrlProduto() {
return urlProduto;
}
public void setUrlProduto(String urlProduto) {
this.urlProduto = urlProduto;
}
public String getUrlImagem() {
return urlImagem;
}
public void setUrlImagem(String urlImagem) {
this.urlImagem = urlImagem;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public StatusPedido getStatus() {
return status;
}
public void setStatus(StatusPedido status) {
this.status = status;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<Oferta> getOfertas() {
return ofertas;
}
public void setOfertas(List<Oferta> ofertas) {
this.ofertas = ofertas;
}
}
- Ofertas:
`
import com.fasterxml.jackson.annotation.JsonIgnore;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
private Pedido pedido;
`
existe a necessidade de colocar eles pois, quando esta criando o json ele entra em um loop infinito dando erro e o ajax e o vue não consegue apresentar na tela, colocando a anotação ele impedir de fazer o loop infinito