当前位置: 首页 > 知识库问答 >
问题:

Quarkus:@Valid不适合PanacheMongo

杨骁
2023-03-14

我的bean验证有问题。我将Quarkus与MongoDB一起使用,当我试图运行create REST API,在请求bean之前使用@valid注释时,如果我想创建一个带有null字段的文档(显然我在entity中使用了@notnull),但创建的文档没有字段,我希望出现异常。下面是我的代码:

car.java:

@MongoEntity(collection="cars")
public class Car extends PanacheMongoEntityBase {

    @BsonId
    private long id;
    @NotNull
    private String carName;
    @NotNull
    @Size(min = 1, max = 3)
    private String code;

    // get and set
}

carResource.java:

@Path("/cars")
@Consumes("application/json")
@Produces("application/json")
public class CarResource {

    @GET
    public List<Car> list() {
        return Car.listAll();
    }

    @GET
    @Path("/{id}")
    public Car get(long id) {
        return Car.findById(id);
    }

    @POST
    public Response create(@Valid Car car) {
        car.persist();
        return Response.status(201).build();
    }

我对@size注释也有同样问题,因为我可以创建一个包含多于3个字符的code字段。

更新

共有1个答案

诸修伟
2023-03-14

您需要在CarResource类上使用@validated注释,如下所示。

@Path("/cars")
@Consumes("application/json")
@Produces("application/json")
@Validated
public class CarResource {

    @GET
    public List<Car> list() {
        return Car.listAll();
    }

    @GET
    @Path("/{id}")
    public Car get(long id) {
        return Car.findById(id);
    }

    @POST
    public Response create(@Valid Car car) {
        car.persist();
        return Response.status(201).build();
    }
}
 类似资料:
  • 我有一个使用JSF Spring5Jersey2.29.1(spring-jersey5)运行在Payara 5.1.3上的web应用程序。 DI部分由Spring处理,它使用@inject。 我的问题是,由于我已经从jerseyendpoint上的jersey2.25 Spring-Jersey4和Payara 4.1.9.2迁移过来,我不能为spring beans使用@inject,我必须使

  • 我发送了一个带有“postman”的“application/json”类型的POST请求,将param“phone”设置为空字符串,正常情况下应该为注释“@notempty”打印错误,但是,它没有打印任何内容,也没有很好地工作。 SpringMVCConfig:

  • 问题内容: 我正在尝试使用scikit-learn / pandas构建情感分析器。建立和评估模型是可行的,但尝试对新的示例文本进行分类则无法。 我的代码: 错误: 我不确定是什么问题。在我的分类方法中,我创建了一个全新的矢量化器来处理要分类的文本,与用于从模型创建训练和测试数据的矢量化器分开。 谢谢 问题答案: 您已经安装了矢量化器,但由于它在函数的生命周期内不存在,因此将其丢弃。相反,将模型转

  • 从Quarkus1.11.3升级后。最终到2.2.3。最终,我的单位测试失败,原因是:java.lang.非法状态异常:io.quarkus.test.junit.mockito.注入Mock的无效使用——注入的bean没有声明CDI正常范围,而是:javax.inject.Singleton。违规字段是测试类ch.zhaw.ba.services.order.MyTest的云EventPubli

  • 我有一个红色像素图像,我想在红色像素处显示另一个图像,所以我编写了以下代码: 我的代码太大了,所以我在这里写了什么是重要的。不管怎样,当我运行它时,我得到这个错误: 回溯(最近一次调用):文件“C:\Users\AndréLuiz\Desktop\equality\equality.py”,第171行,在screen.blit(w_plat,w_pos)类型错误:blit的目标位置无效 检查后,打

  • 我有一个用Java验证注释注释的模型对象。 根据业务需求,将填充文件名或小时字段,以验证我编写的自定义验证器“CriteriaValidator”。 上面的模型作为方法的输入参数传入,该方法也用@Valid和@ValidCriteria注释。 我的问题是方法中的2个注释。我必须添加@Valid才能检查类中注释的约束。我的自定义验证器仅检查两个字段之一的存在:文件名或小时。 我的问题是,如何使用单个