无法在查询中反序列化"java.lang.Integer"的实例



我的查询遇到了一个无法理解的错误!

HttpMessageNotReadableException:JSON解析错误:无法从START_OBECT令牌中反序列化java.lang.Integer的实例;嵌套异常是com.fasterxml.jackson.databind.exc.

我肯定不会想到在Java中查询会有这么多困难。。。我只想使用Integer查询来获取所有OrderProductListbyUser。我希望这将是我关于Java查询的最后一个问题:p

我的订单产品管理员

@RestController
@RequestMapping("/api/auth/orders")
@CrossOrigin()
public class OrderController {
ProductService productService;
OrderService orderService;
OrderProductService orderProductService;
UserService userService;
OrderProductRepository orderProductRepository;
public OrderController(ProductService productService, 
OrderService orderService, 
OrderProductService orderProductService,
OrderProductRepository orderProductRepository
) {
this.productService = productService;
this.orderService = orderService;
this.orderProductService = orderProductService;
this.orderProductRepository = orderProductRepository;
}

@GetMapping("/getListUserOrder")
public @ResponseBody Iterable<OrderProduct> getUserOrderList(@RequestBody Integer id){
return orderProductRepository.findOrderProductByUser(id);
}

我的订单产品存储库

@Query("SELECT o FROM OrderProduct o WHERE o.user=:id")
public Iterable<OrderProduct> findOrderProductByUser(
@Param("id") Integer id);
}

我的订单产品型号


@Entity
@Table(name="OrderProduct")
public class OrderProduct {
@EmbeddedId
@JsonIgnore
private OrderProductPK pk;
@Column(name="QUANTITY", nullable = false) private Integer quantity;

@Column(name="USER", nullable = false) private Integer user;
@Column(name="ORDERING_DATE", nullable = true) private Date dateOrdering;

@Column(name="DELIVER_DATE", nullable = true) private Date dateDeliver;

private boolean active;

public OrderProduct() {
super();
}

您将id作为@RequestBody传递,但您传递的不是有效的JSON

它必须如下:

"your_id_here"

或者只是:

your_id_here

与其使用请求体(因为您只有一个id,一个单独的参数(,不如使用@RequestParam更方便

可能,您需要将控制器中get方法的定义替换为:

@GetMapping("/getListUserOrder")
public @ResponseBody Iterable<OrderProduct> getUserOrderList(@RequestParam Integer id) {
return orderProductRepository.findOrderProductByUser(id);
}

在您的变体中(id参数上有@RequestBody注释(,您需要以json格式在body中指定用户id(只需在请求body中指定带有id的值(,这可能不是您想要的
我的变体(id参数上有@RequestParam注释(通过请求参数接受给定参数,例如/api/auth/orders/getListUserOrder?id=5。对于GET方法来说,这是一种更合适的方式。

相关内容

最新更新