Я столкнулся с проблемой невозможности обойти ни одного валидатора, который используется для проверки уникальности имени объекта при запросах POST и PUT.Подробности приведены ниже:
Дано,
Класс UserDTO с двумя полями
private int id
@UserUniquenessValidator
private String name
Сигнатуры методов контроллера
post(@Valid @RequestBody UserDTO userDTO)
put(@PathVariable int id, @Valid @RequestBody UserDTO userDTO)
Пользовательский валидаторприменяется к имени поля
@UserUniquenessValidator
Теперь, когда я пытаюсь отправить нового пользователя POST, пользовательский валидатор просто проверяет поле имени на соответствие другим записям в базе данных и возвращает true, если не находит ни одного, и т.-versa.
Проблема возникает каждый раз, когда отправляется запрос PUT с неизмененным полем «имя» - валидатор проверяет уникальность и не пропускает, так как уже имеет запись с указанным именем вБД.
В дополнение к этому я должен упомянуть, что ограничение не может быть применено к таблице в базе данных по причинам, которые слишком длинны для объяснения.
Есть ли хитрый ход?вокруг решения этого без необходимости загромождать код слишком много?Я хотел бы, чтобы был способ сообщить валидатору, что каждый раз, когда вводится PUT, чтобы следовать другой логике, чем для запроса POST.