Как определить, какую группу проверки следует использовать для действия репозитория данных Spring? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть репозиторий данных JPA Spring. Можно ли как-то определить группы проверки, которые будут использоваться Hibernate для данной операции (скажем, сохранить)? В некоторых случаях мне нужно будет проверить некоторые группы, в то время как в других случаях нет. Это будет решено на уровне обслуживания. Возможно ли это с помощью Spring Data?

Было бы также хорошо, если бы я мог определить группы проверки, которые вызываются только для новых объектов, а не для обновлений.

1 Ответ

0 голосов
/ 27 июня 2019

по электронной почте Ой. Сожалею. Это решение для Spring Data Rest.

Если вы используете Spring Data JPA, вы должны выполнять проверку вручную перед каждым вызовом JPA.

------ отредактировано

@Configuration
@RequiredArgsConstructor
protected class RepositoryConfig implements RepositoryRestConfigurer {
  private static final String BEFORE_CREATE = "beforeCreate";
  private static final String BEFORE_SAVE = "beforeSave";

  @Override
  public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
    validatingListener.addValidator(BEFORE_CREATE, createValidator());
    validatingListener.addValidator(BEFORE_SAVE, saveValidator());
  }
}

реализует компоненты createValidator() и saveValidator():

public class CreateValidator implements Validator {
  private final LocalValidatorFactoryBean smartValidator;

  @Override
  public boolean supports(Class<?> clazz) {
    return true;
  }

  @Override
  public void validate(Object target, Errors errors) {
    smartValidator.validate(target, errors, {whatEverHintsYouWant} );
  }
}

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

Вы можете даже создать разные валидаторы для каждого объекта, используя метод supports.

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