2015-06-19 3 views
0

У меня есть мой WebService на основе Spring 4, и я использую Hibernate Validator (помимо метода MethodValidationPostProcessor). Моя проблема в том, что у меня есть мой интерфейс ClientService и его реализация. Поэтому я поставил ограничения проверки Bean на реализацию, и это заставляет меня помещать эти ограничения в интерфейс (бросая ConstraintDeclarationException) (или в оба из них).Как избежать Hibernate Validator ConstraintDeclarationException?

Я хочу знать две вещи об этом:

  1. Почему это работает как это? Почему это заставляет меня устанавливать все ограничения на интерфейс? Какова причина?
  2. Есть ли способ установить ограничения только в реализации?

Заранее благодарен! С уважением

ответ

2

Чтобы ответить на ваш первый вопрос. Поведение указано в разделе 4.5.5 спецификации проверки боба. Method constraints in inheritance hierarchies. В основном правило состоит в том, что предварительные условия метода (как представлено ограничениями параметров) не должны усиливаться в подтипах. Это так называемый Liskov substitution principle.

Чтобы ответить на ваш второй вопрос, на данный момент нет способа разместить ограничения на класс реализации. Существует HV-872, в котором предлагается реализовать настраиваемую релаксацию этих правил как особую функцию Hibernate Validator, но она еще не реализована.

+0

Спасибо! Большой ответ – jscherman

Смежные вопросы