0

我使用spring-data和hibernate。现在我想对我的模型应用一些验证。在大多数情况下,我想应用简单验证,如空检查等。但在某些情况下,我想要应用更严格的验证,如电子邮件验证。我在Hibernate验证器中发现了非常有用的功能 - @Email注释。它的工作原理非常好,但现在的问题是:Spring数据和休眠 - 模型验证 - 异常转换

,如果我尝试保存空值的模型,那么下面的异常被抛出:

org.springframework.dao.DataIntegrityViolationException

但如果我尝试保存非空,但非电子邮件值的模型(假设asdfgh),那么下面的异常被抛出:

javax.validation.ConstraintViolationException

我很想看到在这两种情况下只有一种例外,因为在这两种情况下,模型没有通过验证,我想只是我的异常担心只有一个例外类型处理代码。

我试图将PersistenceExceptionTranslationPostProcessor添加到我的bean配置中,但它看起来不会改变任何东西。

你知道如何“统一”这个例外吗?

型号:

@Entity 
public class ValidationModel { 
    ... 

    @Email 
    @Column(nullable = false) 
    private String email; 

    ... 
} 

库:

public interface ValidationModelRepository extends JpaRepository<ValidationModel, Long> { 
} 

回答

1

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

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

+0

啊你是对的!我怎么能忘记呢? :) 谢谢! –