【问题标题】:Hibernate Validator Custom Constraint depends on base classHibernate Validator Custom Constraint 依赖于基类
【发布时间】:2016-04-01 22:17:59
【问题描述】:

我可以使用 Hibernate Validator (w/i Spring boot) 创建一个自定义约束,其中验证取决于子类吗?示例:

public class Engine {
   @NotEmpty
   private String name;
   @NotNull
   private int power;
   @NotNull // HERE I ONLY NEED VALIDATE IF THIS CLASS ARE ONE PROP FROM Car Class
   private int color;

   ... getter and setter
}

Here I have 2 classes,

public class Car {
   @NotEmpty
   private String name;
   @Valid
   private Engine engine;
   ... getter and setter
}

public class Bike {
   @NotEmpty
   private String name;
   @Valid
   private Engine engine; // HERE I DONT NEED TO VALIDATE THE COLOR
   ... getter and setter
}

【问题讨论】:

    标签: java hibernate spring-boot hibernate-validator


    【解决方案1】:

    你应该可以使用@ConvertGroup做你想做的事:

    组接口:

    public interface BasicEngineChecks {
    }
    
    public interface ExtendedEngineChecks {
    }
    

    更新示例:

    @GroupSequence({ BasicEngineChecks.class, ExtendedEngineChecks.class })
    public class Engine {
       @NotEmpty(groups = BasicEngineChecks.class)
       private String name;
    
       @NotNull(groups = BasicEngineChecks.class)
       private int power;
    
       @NotNull(groups = ExtendedEngineChecks.class)
       private int color;
    
       // ...
    }
    

    汽车没有什么特别之处。级联验证将通过默认组,该组被转换为 BasicEngineChecksExtendedEngineChecks 的所有约束

    public class Car {
       @NotEmpty
       private String name;
    
       @Valid
       private Engine engine;
    
       // ...
    }
    

    对于Bike,我们进行显式转换,仅评估BasicEngineChecks

    public class Bike {
       @NotEmpty
       private String name;
    
       @Valid
       @ConvertGroup(from = Default.class, to = BasicEngineChecks.class)
       private Engine engine; 
    
       // ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 2018-03-10
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多