使用 org.hibernate.validator.internal.cfg.context 对方法创建约束

Use org.hibernate.validator.internal.cfg.context for creating constraint on a method

我目前正在重构一段代码,因为看起来 hibernate 人员在版本兼容性方面的记录不佳。

我们最初使用 hibernate-validator-5.0.2.Final,我必须将其升级到 hibernate-validator-6.0.16.Final。 public 类 例如:ConfiguredConstraint.java 已更改为非 public,它们现在似乎不再起作用了!

我可以看到很多新方法和 类 介绍,但有点坚持使用。

我需要在 method 上创建约束,现在有 N 种方法,我无法从这个包中找出使用哪一种:org.hibernate.validator.internal.cfg.context

我知道这是一个非常抽象的信息,但如果有人知道如何处理这个问题并在高层次上实施,将不胜感激!

TIA

你不应该直接使用 internal 包中的东西。

参见 https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-programmatic-api 的示例 12.8。

HibernateValidatorConfiguration configuration = Validation
        .byProvider( HibernateValidator.class )
        .configure();

ConstraintMapping constraintMapping = configuration.createConstraintMapping();

constraintMapping
    .type( Car.class )
        .constructor( String.class )
            .parameter( 0 )
                .constraint( new SizeDef().min( 3 ).max( 50 ) )
            .returnValue()
                .valid()
        .method( "drive", int.class )
            .parameter( 0 )
                .constraint( new MaxDef().value( 75 ) )
        .method( "load", List.class, List.class )
            .crossParameter()
                .constraint( new GenericConstraintDef<>(
                        LuggageCountMatchesPassengerCount.class ).param(
                            "piecesOfLuggagePerPassenger", 2
                        )
                )
        .method( "getDriver" )
            .returnValue()
                .constraint( new NotNullDef() )
                .valid();

然后根据此配置构建 ValidatorFactory