Spring проверка аннотации - проверка уникальности при обновлении vs add

У меня POJO называется спорт со свойствами sportID, sportName, количеством игроков. Используя аннотированную проверку, я написал собственное ограничение аннотации, чтобы проверить, существует ли sportName в базе данных уже или нет. Он отлично работает при попытке добавить имя sportName, однако, если я попытаюсь обновить игроков, не изменяя sportName, проверка не удалась.

Есть ли способ передать параметр в аннотированной проверке? Например, я хотел бы передать sportID на проверку соответствия SportsName, чтобы я мог исключить этот идентификатор в запросе db.

Или есть лучший способ сделать это? В моем контроллере я должен позволить Spring проверять входные данные (с помощью @Valid), а затем, если ошибок нет, вызовите функцию проверки для проверки бизнес-правил?

Ответ 1

Лучше всего использовать группы валидации. (Spring Группы проверки MVC и JSR-303)

Затем вы можете иметь группу проверки по умолчанию без "не завершать валидатор". И иметь дополнительную группу с "не завершает валидатор". Это позволит вам запускать "не завершать валидатор" только тогда, когда вам это нужно. (К сожалению, он не поддерживается напрямую в Spring 3.0, вам нужно начать проверку "вручную" )

Другим способом было бы не реализовать валидатор, как средство проверки поля, но больше похоже на валидатор класса. - Посмотрите на различные решения, обсуждаемые для проверки поперечного поля в этом вопросе о переполнении стека. Это даст вам представление о том, как получить доступ к полю id.