【问题标题】:Spring data and hibernate - model validations - exception translationSpring 数据和休眠 - 模型验证 - 异常翻译
【发布时间】: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


    【解决方案1】:

    @Column(nullable = false) 不是验证检查。这是一个 JPA 约束。

    要验证值不为空,请使用@NotNull

    【讨论】:

    • 啊,你是对的!我怎么能忘记呢? :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多