Я использую Spring Boot (1.3.3.RELEASE) с данными Spring и Bean Validation в проекте, и я нашел неожиданное (по крайней мере для меня) поведение. У меня есть объект User и его UserRepository (интерфейс, расширяющий JpaRepository). Когда я делаю вызов так:Почему метод сохранения данных Spring Data JPA не подтвердился сразу?
userRepository.save(user);
logger.info("User saved with id", user.getId());
На новой и Несуществующий пользователь, регистратор называется и показывает, что пользователь получил идентификатор. Несмотря на то, что ничего не сохраняется, и ConstraintViolationException бросается в конце, после регистрации.
Но если я изменяю:
userRepository.saveAndFlush(user);
logger.info("User saved with id", user.getId());
ConstraintViolationException выбрасывается сразу и регистратор линия никогда не будет достигнута.
Это второе поведение, в котором исключение выбрасывается перед регистратором, является тем, что, я считаю, должно произойти, когда я вызываю метод userRepository.save().
Что не так? Что-то о моем проекте? Или мое понимание того, как должна работать проверка валика?