在Controller函数中为POST请求SpringBoot HIbernate获取的空列表



我正在创建一个电子商务购物平台。

我有以下3个实体类:

  1. 产品库存

  2. 订单

  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,因此它不会被反序列化。

请参阅此。

最新更新