Spring @RequestBody中的对象不起作用

时间:2018-07-22 13:40:27

标签: java json spring set hashset

我有一个对象,其中包含另一个对象的列表。

@Entity
@Table(name = "PEDIDO")
public class Pedido implements Serializable {

    private static final long serialVersionUID = -6787191900085416567L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @JsonFormat(pattern = "dd/MM/yyyy HH:mm")
    private Date instante;

    @OneToOne(cascade = CascadeType.ALL, mappedBy = "pedido")
    private Pagamento pagamento;

    @ManyToOne
    @JoinColumn(name = "CLIENTE_ID")
    private Cliente cliente;

    @ManyToOne
    @JoinColumn(name = "ENDERECO_DE_ENTREGA_ID")
    private Endereco enderecoDeEntrega;

    @OneToMany(mappedBy = "id.pedido")
    private Set<ItemPedido> itens = new HashSet<>();

    //Getters and Setters
}

我还有一个POST方法来添加对象:

@PostMapping
public ResponseEntity<Void> insert(@Valid @RequestBody Pedido obj) {
    URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
            .buildAndExpand(pedidoService.insert(obj).getId()).toUri();
    return ResponseEntity.created(uri).build();
}

我的POST请求保持如下:

{
   "cliente":{
      "id":1
   },
   "enderecoDeEntrega":{
      "id":1
   },
   "pagamento":{
      "numeroDeParcelas":10,
      "@type":"pagamentoComCartao"
   },
   "itens":[
      {
         "quantidade":2,
         "produto":{
            "id":1
         }
      },
     {
         "quantidade":2,
         "produto":{
            "id":3
         }
      },
      {
         "quantidade":1,
         "produto":{
            "id":2
         }
      }
   ]
}

问题在于,当请求从服务器端到达时,即使我发送了多个项目,HashSet也仅包含一个项目。

有人经历过吗?

0 个答案:

没有答案