【发布时间】:2017-05-06 10:30:16
【问题描述】:
我使用 spring-data 和休眠。现在我想对我的模型进行一些验证。在大多数情况下,我想应用简单的验证,例如空检查等。但在某些情况下,我想应用更严格的验证,例如电子邮件验证。我在 Hibernate 验证器中发现了非常有用的功能 - @Email 注释。它工作得很好,但问题是:
如果我尝试使用 null 值保存模型,则会引发以下异常:
org.springframework.dao.DataIntegrityViolationException
但是,如果我尝试保存具有非 null 但非电子邮件值的模型(比如说 asdfgh),则会引发以下异常:
javax.validation.ConstraintViolationException
我希望在这两种情况下只看到一种类型的异常,因为在这两种情况下模型都没有通过验证,我只想担心我的异常处理代码中只有一种异常类型。
我尝试将 PersistenceExceptionTranslationPostProcessor 添加到我的 bean 配置中,但它看起来并没有改变任何东西。
您知道如何“统一”这些异常吗?
型号:
@Entity
public class ValidationModel {
...
@Email
@Column(nullable = false)
private String email;
...
}
存储库:
public interface ValidationModelRepository extends JpaRepository<ValidationModel, Long> {
}
【问题讨论】:
标签: spring hibernate exception-handling spring-data hibernate-validator