2011-12-20 16 views
1

私は、以下のロジックで、カスタムの制約を持っている:私は、作成操作からCityインスタンスをチェックする必要がある場合にカスタム制約の検証とヌル

@Override 
public boolean isValid(City city, ConstraintValidatorContext context) { 
    boolean result = (city.getId() > 0 || (city.getName() != null && city.getName() != "")); 
    return result; 
} 

これがうまく機能(それは@NotNullによって守らすることができますので、このフィールドは必須です) 。

しかし、Cityインスタンスを含むオブジェクトを更新する必要がある場合、このフィールドはオプションです。したがって、私が@NotNullの操作をCreateの操作にグループ化しても、それがヌルであるかどうかをチェックする方法と、有効なオブジェクトであれば(そうでない場合)必要があります。

両方のチェックで別の制約を作成せずに行うことはできますか?

お返事ありがとうございます。

+0

データベースバックエンドでこれを組み合わせていますか?そうであれば、行全体を更新するか、変更された列だけを更新しますか? (Look into MERGE) – LazyCubicleMonkey

+0

いいえ、UserEntityの前に検証付きのUserModelがあります – Pilgrim

答えて

0

私はOR nullチェックで私の最初の制約を編集しました。

@Override 
    public boolean isValid(Country country, ConstraintValidatorContext context) { 
     boolean result = (country==null|| 
          country.getId() > 0 || 
          (country.getName() != null && country.getName() != "")); 
     return result; 
    } 

そして豆で

@NotNull(groups = Create.class) 
    @ValidCountry(groups = {Create.class, Update.class}) 
    private Country country;