当前位置: 首页 > 知识库问答 >
问题:

在控制器函数中为请求后SpringBootHibernate获取的空列表

郤玉书
2023-03-14

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

我有以下3个实体类:

>

  • 产品库存

    订单

    订购的产品

    @实体@Getter@Setter@noargsconstuctor@allargsconstuctor公共类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;
    

    }

    @Entity@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@noargsconstuctor@allargsconstuctor@jsonidentialinfo(property=“id”,generator=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来完成这篇文章,但我还是得到了同样的结果。数据保存在MySqlDB中,但每次列表都是空的。

    我无法找出我在哪里犯的错误。

    有人能帮忙吗?

    提前感谢。

  • 共有1个答案

    庞书
    2023-03-14

    该字段上有@JsonIgnore,因此它不会被反序列化。

    请参阅此。

     类似资料:
    • 问题内容: 我在用JavaScript抓取API挣扎。当我尝试通过获取将某些内容发布到服务器时,请求正文为空数组。但是,当我使用Postman时,它可以工作…这是我在NodeJS中的服务器代码: 这是我的客户: 问题是在服务器端,req.body为空。有人能帮我吗?谢谢 ! 问题答案: 问题是 从文档中 … 防止该方法成为HEAD,GET或POST之外的任何其他内容, 并且 阻止 标头成为 简单标

    • 我正在替换Spring Boot REST控制器中对POST请求输入的手动验证。JSR-303 Spring Bean验证用于验证请求主体中的实例变量,这是预期的工作。什么是建议的方法来验证请求主体中的对象不是null? 我试过: > 用@NotNull注释整个类 我正在替换: 与Bean验证等效: 我尝试通过以下方式对控制器方法进行单元测试: 我希望MethodArgumentNotValidE

    • 有一个spring mvc控制器资源来接收文件并将其存储在本地存储器中。请求是一个多部分(“内容类型:多部分/表单数据”),由几个部分组成。第一部分是文件的JSON/XML描述。第二个和以下是文件。但这些部分也可能是多部分的(“内容类型:多部分/混合”)。一部分中的文件很少。多部分中的多部分。 我必须根据请求结构将它们分组存储。身体txt和图片。gif来自一个组中的第二个表单数据部分,文件来自另一

    • 问题内容: 我有一个Sinatra应用程序,并且在我的大多数控制器中,json都会传入并在params对象中自动获取。但是,除非我用before方法来拉取request.body参数,否则我将获得一个根本不获取参数的后期操作.body参数将它们解析为JSON并将它们合并到params哈希中。 这是控制器以及filter方法: 我看到的输出基本上是,控制器操作中的参数实际上正确地位于其中。但是,如果

    • 问题内容: Spring MVC-如何在Spring控制器中获取地图中的所有请求参数?范例网址: 我不知道attr1,att2和attr4的名称。 我希望能够做类似的事情(或类似的,不在乎,只要我可以访问Map的请求参数名-> value: 如何使用Spring MVC做到这一点? 问题答案: 尽管其他答案是正确的,但肯定不是直接使用HttpServletRequest对象的“spring方式”。