Пользовательская аннотация для проверки уникальных элементов - PullRequest
0 голосов
/ 20 сентября 2018

Мне нужно написать пользовательскую аннотацию для UniqueElements.Я знаю, что Hibernate предоставляет один из них, но мне нужно проверить только одним параметром (поэтому я не могу использовать hashCode).

У меня есть что-то вроде этого:

@CustomAnnotatinon
List<MyParameter> parameters;

Допустим, MyParameterid, value и type, но я должен проверять уникальные элементы только по id.Может кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 20 сентября 2018

То, что я сделал в аналогичной ситуации с Hibernate (не знаю, лучший ли это способ), выглядит примерно так:

В своей пользовательской аннотации добавьте ограничениеаннотация с проверяющим классом:

@Constraint (validatedBy = UniqueIdValidator.class)
public @interface CustomAnnotation

Затем я создал класс UniqueIdValidator (я использовал array в качестве поля вместо List, как вы, но я надеюсь, что это работает)

public class UniqueIdValidator implements ConstraintValidator<CustomAnnotation, List<String>>

с помощью метода:

@Override
public boolean isValid(List<String> values, ConstraintValidatorContext constraintContext)

в этом методе вы можете проверить, содержит ли ваш List дубликаты, и сгенерировать исключение или использовать функции обработки ошибок, такие как добавление сообщения в constraintContextкак они делают по ссылке, которую я добавил выше.

Чтобы найти дубликаты, вы можете сделать это как this т.е.

...