Possuo uma lista de itens dentro da entidade nota onde ficam alguns produtos. Ao tentar realizar meu primeiro teste inserindo a minha lista de itens os meus produtos tenho recebido a seguinte exceção:
{
"timestamp": "2023-06-21T19:18:40.647+00:00",
"status": 400,
"error": "Bad Request",
"trace": "org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `br.com.projetonotafiscal.notafiscal.Entity.Produto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('1'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `br.com.projetonotafiscal.notafiscal.Entity.Produto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('1')\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 5, column: 19]
Percebi que o problema esta na entidade produto. O Json que estou enviando esta da seguinte forma:
{
"cliente": 1,
"itens":[
{
"produto": 1,
"quantidade": 2
},
{
"produto": 2,
"quantidade": 1
},
{
"produto": 3,
"quantidade": 2
}
],
"data": "2023-06-21"
}
Aqui esta a minha classe Produto:
@Entity(name = "Produto")
@Table(name = "produto")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String codigo;
private String descricao;
private BigDecimal valor_unitario;
public Produto() {}
public Produto(ProdutoDTO dto) {
this.id = dto.getId();
this.codigo = dto.getCodigo();
this.descricao = dto.getDescricao();
this.valor_unitario = dto.getValor_unitario();
}
//getters e setters
Minha classe Item:
@Entity(name = "Itens")
@Table(name = "itens")
public class Itens {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_produto")
private Produto produto;
@ManyToMany(mappedBy = "itens")
private List<Nota> notas;
private int ordenacao;
private BigDecimal quantidade;
private BigDecimal valor_total;
public Itens() {}
public Itens(ItensDTO dto) {
this.ordenacao = dto.getOrdenacao();
//this.produto = dto.getProduto();
this.quantidade = dto.getQuantidade();
this.valor_total = dto.getValor_total();
}
//getters e setters
Minha classe Nota:
@Entity(name = "Nota")
@Table(name = "nota")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Nota {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_cliente")
private Cliente cliente;
@ManyToMany
@JoinTable(name = "notas_itens",
joinColumns = @JoinColumn(name = "id_nota"),
inverseJoinColumns = @JoinColumn(name = "id_item"))
private List<Itens> itens;
private String numero;
private LocalDate data;
private BigDecimal valor_total;
public Nota(NotaDTO dto) {
this.id = dto.getId();
//this.cliente = dto.getCliente();
this.itens = dto.getItens();
this.data = dto.getData();
this.valor_total = dto.getValor_total();
this.numero = dto.getNumero();
}
//getters e setters