这是我的实体:
@Entity
@Table(name = "item_pedido")
public class ProdutoPedido {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "produto_id")
private Produto produto;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "pedido_id")
private Pedido pedido;
private int quantidade;
// getters and setters omitted
}
仓库:
public interface ProdutoPedidoRepository extends CrudRepository<ProdutoPedido, Long> {
}
以及控制器的保存方法:
@PostMapping("/itensdevendas")
public ProdutoPedido salvarProdutoPedido(@RequestBody ProdutoPedido produtoPedido) {
return produtoPedidoRepository.save(produtoPedido);
}
邮递员的电话:
{
"quantidade":33,
"pedido_id":1,
"produto_id":4
}
但是,只有
quantidade
和id
属性是完整的。没有保存属性
pedido_id
和produto_id
怎么了? 最佳答案
您的实体ProdutoPedido
具有Produto
对象。
如果您将1传递给产品,它将不会被映射,并且值将保持为空。
注意:我假设Produto和Pedido的1和4数据已经存在。
您可以尝试2种方法
第一:
假设Produto
和Pedido
对象具有“ id”字段,请将UI的JSON更改为类似的内容。
希望它将转换为Produto和Pedido对象。
通过控制器方法打印确认。
{
"quantidade":33,
"pedido_id": { "id" : 1 },
"produto_id": { "id" : 4 }
}
第二:
您需要添加这样的DTO,并将其用于UI映射。
ProdutoPedidoDTO {
private Long id;
private int produto;
private int pedido;
private int quantidade;
}
@PostMapping("/itensdevendas")
public ProdutoPedidoDTO salvarProdutoPedido(@RequestBody ProdutoPedidoDTO produtoPedido) {
ProdutoPedido prodPedido = new ProdutoPedido();
// add values
// add Produto obj to ProdutoPedido
Produto produto = new Produto();
produto.setId(produtoPedido.getProduto()):
prodPedido.setProduto(produto);
// do same for Pedido
return produtoPedidoRepository.save(prodPedido);
}