首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >验证嵌套对象Spring boot时卡住了

验证嵌套对象Spring boot时卡住了
EN

Stack Overflow用户
提问于 2019-04-09 02:24:44
回答 1查看 60关注 0票数 0

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

下面是Order、OrderItems和OrderController的代码片段。

Order.java

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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

代码语言:javascript
复制
@PostMapping("/order/")
public Order saveOrder(@Valid @RequestBody Order order) {
    return orderService.save(order);
}

邮购/

代码语言:javascript
复制
{
    "customerId": "asdhajhdjssga",
    "orderItems": [
        {
            "productId": 1,
            "quantity": 2,
        },
        {
            "productId": 2,
            "quantity": 2,
        }
    ]
}

如何验证子对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 13:28:31

在您的代码中,您已经用@NotNull注释了一个基本字段,类型为int。原语字段永远不能为null,因此@NotNull永远不会生效,因为默认值是0。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55579591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档