繁体   English   中英

卡住验证嵌套对象Spring Boot

[英]Stuck validating nested Object Spring boot

我正在尝试在子实体(即OrderItem)上添加验证。 为此,我在Order.ListOfOrderItems上添加了@Valid批注,但是它不起作用。

以下是Order,OrderItems和OrderController的代码段。

Order.java

@Entity
@Getter @Setter
@Table(name = "orders")
public class Order extends BaseEntity {
    protected @NotBlank String customerId;

    @Valid @NotNull
    @OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY, mappedBy = "order")
    private List<OrderItems> orderItems = new ArrayList<OrderItems>();

}

OrderItems.java

@Entity
@Getter @Setter
public class OrderItems extends BaseEntity {
    protected @NotNull int productId;
    protected @NotNull int quantity;

    @Getter(AccessLevel.NONE)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "order_id", nullable = false)
    private Order order;
}

OrderController.java

@PostMapping("/order/")
public Order saveOrder(@Valid @RequestBody Order order) {
    return orderService.save(order);
}

邮政订单/

{
    "customerId": "asdhajhdjssga",
    "orderItems": [
        {
            "productId": 1,
            "quantity": 2,
        },
        {
            "productId": 2,
            "quantity": 2,
        }
    ]
}

如何验证子对象?

在您的代码中,您已经用@NotNull注释了一个原始字段,键入int 基本字段永远不能为null ,因此@NotNull将永远不会插入,因为默认值为0。

可以将int更改为Integer ,这是对象包装器,可以为null或使用类似@Min的值来验证某个值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM