Hibernate Validator 自定义约束取决于基础 class

Hibernate Validator Custom Constraint depends on base class

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

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
}

你应该可以使用 @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;

   // ...
}

汽车没什么特别的。级联验证将通过默认组,该组被转换为 BasicEngineChecks 以及 ExtendedEngineChecks

的所有约束
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; 

   // ...
}