我正在尝试添加对子实体的验证,即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,
}
]
}
如何验证子对象?
发布于 2019-04-09 13:28:31
在您的代码中,您已经用@NotNull
注释了一个基本字段,类型为int
。原语字段永远不能为null
,因此@NotNull
永远不会生效,因为默认值是0。
或者将int
更改为Integer
,这是可以为null
的对象包装器,或者使用@Min
之类的内容来验证某个值。
https://stackoverflow.com/questions/55579591
复制相似问题