Проверка аннотации Spring - проверка уникальности при обновлении и добавлении - PullRequest
8 голосов
/ 29 февраля 2012

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

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

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

1 Ответ

3 голосов
/ 29 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...