Spring 数据和休眠 - 模型验证 - 异常翻译
Spring data and hibernate - model validations - exception translation
我使用 spring-data 和休眠。现在我想对我的模型应用一些验证。在大多数情况下,我想应用简单的验证,如空值检查等。但在某些情况下,我想应用更严格的验证,如电子邮件验证。我在 Hibernate 验证器中发现了非常有用的特性——@Email 注释。它工作得很好,但问题是:
如果我尝试用空值保存模型,则会抛出以下异常:
org.springframework.dao.DataIntegrityViolationException
但是如果我尝试保存一个非空但非电子邮件值的模型(比如 asdfgh),则会抛出以下异常:
javax.validation.ConstraintViolationException
我希望在两种情况下都只看到一种类型的异常,因为在这两种情况下模型都没有通过验证,我只想担心异常处理代码中的一种异常类型。
我尝试将 PersistenceExceptionTranslationPostProcessor 添加到我的 bean 配置中,但它看起来没有任何改变。
您知道如何 "unify" 这个例外吗?
型号:
@Entity
public class ValidationModel {
...
@Email
@Column(nullable = false)
private String email;
...
}
存储库:
public interface ValidationModelRepository extends JpaRepository<ValidationModel, Long> {
}
@Column(nullable = false)
不是验证检查。这是一个 JPA 约束。
要验证值不为空,请使用 @NotNull
。
我使用 spring-data 和休眠。现在我想对我的模型应用一些验证。在大多数情况下,我想应用简单的验证,如空值检查等。但在某些情况下,我想应用更严格的验证,如电子邮件验证。我在 Hibernate 验证器中发现了非常有用的特性——@Email 注释。它工作得很好,但问题是:
如果我尝试用空值保存模型,则会抛出以下异常:
org.springframework.dao.DataIntegrityViolationException
但是如果我尝试保存一个非空但非电子邮件值的模型(比如 asdfgh),则会抛出以下异常:
javax.validation.ConstraintViolationException
我希望在两种情况下都只看到一种类型的异常,因为在这两种情况下模型都没有通过验证,我只想担心异常处理代码中的一种异常类型。
我尝试将 PersistenceExceptionTranslationPostProcessor 添加到我的 bean 配置中,但它看起来没有任何改变。
您知道如何 "unify" 这个例外吗?
型号:
@Entity
public class ValidationModel {
...
@Email
@Column(nullable = false)
private String email;
...
}
存储库:
public interface ValidationModelRepository extends JpaRepository<ValidationModel, Long> {
}
@Column(nullable = false)
不是验证检查。这是一个 JPA 约束。
要验证值不为空,请使用 @NotNull
。