卡住验证嵌套对象Spring Boot

时间:2019-04-08 18:24:44

标签: java spring hibernate

我正在尝试在子实体(即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,
        }
    ]
}

如何验证子对象?

1 个答案:

答案 0 :(得分:0)

在代码中,您注释了原始字段,并用int键入@NotNull。原始字段永远不能为null,因此@NotNull将永远不会加入,因为默认值为0。

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