我正在尝试在子实体(即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,
}
]
}
如何验证子对象?
答案 0 :(得分:0)
在代码中,您注释了原始字段,并用int
键入@NotNull
。原始字段永远不能为null
,因此@NotNull
将永远不会加入,因为默认值为0。
将int
更改为Integer
,这是对象包装器,可以是null
或使用类似@Min
的东西来验证某个值。