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