我正在创建一个电子商务购物平台。
我有以下3个实体类:
-
产品库存
-
订单
-
订购产品
@实体@Getter@Setter@NoArgsConstructor@AllArgsConstructor公共类ProductInventory{
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long productId; private String name; private Double price; private Long availableQty; private String description; @Enumerated(EnumType.STRING) private Category category;
}
@实体@Getter@Setter@NoArgsConstructor@AllArgsConstructor公共类订单{
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long orderId; private String userEmail; @Temporal(TemporalType.DATE) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="dd/MM/yyyy") private Date orderDate; @Temporal(TemporalType.DATE) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="dd/MM/yyyy") private Date deliveryDate; private double bill; @JsonIgnore @OneToMany(cascade = CascadeType.ALL , mappedBy = "orders") private List<OrderedProduct> orderedProductList = new ArrayList<>();
}
@实体@Setter@Getter@NoArgsConstructor@AllArgsConstructor@JsonIdentityInfo(属性="id",生成器=ObjectIdGenerators.PropertyGenerator.class(公共类OrderedProduct{
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private Long orderedProductId; private Long quantityOrdered; @ManyToOne(optional = false , fetch = FetchType.LAZY) @JoinColumn(name = "ORDEREDPRODUCT_ID") private Orders orders; @ManyToOne(optional = false , fetch = FetchType.LAZY) @JoinColumn(name = "product_product_id") private ProductInventory product;
}
我有以下控制器来接受POST请求。
@RestController
@RequestMapping("/orders")
public class OrderController {
@Autowired
private OrderService orderService;
@PostMapping(value = "/placeOrder")
public ResponseEntity<String> createUserRequest(@RequestBody Orders newOrder) throws IOException {
System.out.println("NewOrder ID = "+ newOrder.getOrderId());
System.out.println("NewOrder UserEmail = "+ newOrder.getUserEmail());
System.out.println("NewOrder ORDERDATE = "+ newOrder.getOrderDate());
System.out.println("NewOrder DELIVERYDATE = "+ newOrder.getDeliveryDate());
System.out.println("NewOrder BILL = "+ newOrder.getBill());
System.out.println("NewOrder List = "+ newOrder.getOrderedProductList());
return orderService.createOrder(newOrder);
}
}
当我发送以下POST请求时:
{
"userEmail": "new order",
"orderDate": "09/03/2022",
"deliveryDate": "09/04/2022",
"bill": 80,
"orderedProductList": [
{
"orderedProductId": 1,
"quantityOrdered": 3
}
]
}
我在控制台中得到以下输出:
NewOrder ID = null
NewOrder UserEmail = new order
NewOrder ORDERDATE = Wed Mar 09 05:30:00 IST 2022
NewOrder DELIVERYDATE = Sat Apr 09 05:30:00 IST 2022
NewOrder BILL = 80.0
NewOrder List = [] --------------------I'm more concerned about this list being empty inside the controller
Inside OrderService
Bill : 80.0
The number of ordered products are as follows : 0
当表中存在和不存在具有给定id的产品时,我尝试执行POST请求。两次都在控制台中返回了相同的结果。
我还尝试通过从JSON中删除"quantityOrdered": 3
来执行POST,但再次得到了相同的结果数据被保存在MySqlDB中,但每次列表都是空的
我找不出我在哪里犯的错。
有人能帮忙吗?
提前谢谢。
您在该字段上有@JsonIgnore,因此它不会被反序列化。
请参阅此。