2011-12-20 1 views
1

У меня есть пользовательские ограничения, с следующей логикой:пользовательских ограничений проверка и Null

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

Это хорошо работает, когда мне нужно проверить City экземпляр из операции создания (это поле обязательно для заполнения, поэтому он может быть охранялось @NotNull) ,

Но когда мне нужно обновить объект, который содержит экземпляр City, это поле является необязательным. Поэтому, даже если я группирую @NotNull ограничение на операцию Create, мне по-прежнему нужен способ проверить, является ли он нулевым и (если это не так), если это действительный объект.

Могу ли я это сделать, не создавая другого ограничения с помощью обеих проверок?

Спасибо за ответы.

+0

Вы совмещая это с базой данных фоновым? Если это так, вы обновляете всю строку или только столбцы, которые были изменены? (Посмотрите в MERGE) – LazyCubicleMonkey

+0

нет, у меня есть UserModel с проверкой перед UserEntity – 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; 

 Смежные вопросы

  • Нет связанных вопросов^_^