То, что я сделал в аналогичной ситуации с 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 т.е.