【发布时间】:2016-10-11 21:56:06
【问题描述】:
我在一个项目中使用带有 Spring Data 和 Bean Validation 的 Spring Boot (1.3.3.RELEASE),我发现了一个意想不到的(至少对我而言)行为。我有一个用户实体及其 UserRepository(扩展 JpaRepository 的接口)。当我这样打电话时:
userRepository.save(user);
logger.info("User saved with id", user.getId());
在一个新的无效用户上,调用记录器并显示该用户收到了一个 id。即使没有任何东西被持久化并且在记录后最后抛出 ConstraintViolationException。
但如果我改为:
userRepository.saveAndFlush(user);
logger.info("User saved with id", user.getId());
ConstraintViolationException 立即被抛出,并且永远不会到达记录器行。
第二种行为是在记录器之前抛出异常,我相信当我调用 userRepository.save() 方法时它会发生这种情况。
怎么了?关于我的项目?或者我对 bean 验证应该如何工作的理解?
【问题讨论】:
标签: java spring spring-data spring-data-jpa