2016-04-01 8 views
0

Hibernate Validator(Springブートなし)でカスタム制約を作成できますか?ここで、検証はサブクラスに依存しますか?例:Hibernate Validatorカスタム制約は基底クラスに依存

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 
} 

答えて

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; 

    // ... 
} 

特別なものは何もありません車についてカスケード接続検証が唯一BasicEngineChecks評価BasicEngineChecksの一部だけでなく、BikeについてはExtendedEngineChecks

public class Car { 
    @NotEmpty 
    private String name; 

    @Valid 
    private Engine engine; 

    // ... 
} 

我々は明示的な変換を行うことであるすべての制約に翻訳さデフォルトのグループを通過します:

public class Bike { 
    @NotEmpty 
    private String name; 

    @Valid 
    @ConvertGroup(from = Default.class, to = BasicEngineChecks.class) 
    private Engine engine; 

    // ... 
} 
関連する問題