控制台上未显示 Quarkus 休眠验证异常

Quarkus hibernate validations exceptions not showing on the console

我有一个使用 Quarkus 1.4.2 的简单项目。当我使用 @Valid 注释时,验证失败并显示状态 500,异常不会显示在控制台上。仅在SwaggerUI。我应该怎么做才能在控制台上打印出来?

@ApplicationScoped
public class ProductService {
    public void validateProduct(@Valid Product product) {

    }
}

发生的异常是:

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

错误正确。它只是没有显示在控制台上。

如果我理解正确,你需要使用 Validator 对象来捕获可能的异常:

@Inject
Validator validator;

public void validateProduct(Product product) {
    // Should throw an error
    Set<ConstraintViolation<Product>> violations = validator.validate(product);
    if(violations.isEmpty()) {
        return;
    }
    for (ConstraintViolation<Product> violation : violations) { // or log whole set as json
        System.out.println(violation.toString()); //TODO prettify
    }
    throw new ValidationException(JsonbBuilder.create().toJson(violations));
}

如果您收到 500 错误,您现在可以捕获并记录。

或者在您调用服务的地方接听 UnexpectedTypeException。这可能会更好。

我希望记录错误,因为这绝对是一个可用性问题。我希望它在我们收集 Hibernate Validator 元数据时在启动时记录,而不是在每次调用时记录。

您可以创建一个复制器并在 Quarkus 跟踪器 here 中打开一个 GitHub 问题 here

我会检查一下,看看是否需要修复。