Quarkus: @Valid не работает с PanacheMongo
У меня проблема с проверкой моего bean-компонента. Я использую Quarkus с MongoDB, и когда я пытаюсь запустить REST API, с@Valid
аннотации перед компонентом запроса, я ожидаю исключения, если я хочу создать документ с null
поле (очевидно, я использую @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
аннотацию, потому что я могу создать code
поле с количеством символов более 3.
ОБНОВИТЬ
Валидация работает с quarkus-hibernate-validator.
Теперь мне нужно найти решение для уникального поля.
И кроме основного вопроса: есть ли аннотация вроде @Indexed(unique = true)
? Мне нужно уникальное поле для моего приложения.
1 ответ
Вам нужно использовать @Validated
аннотация на CarResource
Класс, как показано ниже.
@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();
}
}