如何在Hibernate Validator中检查冲突注释?

时间:2012-01-15 18:43:02

标签: java hibernate-validator

假设我正在使用Hibernate Validator,我编写了以下代码:

@Email
@Range(min=3,max=7)
public String getSomething() {
    // ...
}

@Email注释仅适用于CharSequence实现(字符串等)。 @Range注释仅适用于数字类型。

当我执行此代码时,没有什么特别的事情发生。 getSomething()与添加这些注释之前完成的工作完全相同。

如何使用Hibernate Validator检测我不能同时使用这两个注释?提前谢谢!

1 个答案:

答案 0 :(得分:3)

根据JavaDoc@Range约束也适用于数字的字符串表示。从Hibernate Validator的角度来看,一切都很顺利。

请注意,调用getSomething()方法不会自动触发约束的评估。要验证约束,请使用javax.validation.Validator API。如果错位约束(例如@Email放入数字),Hibernate Validator将在验证期间抛出异常(例如,在调用Validator#validate()时。

为了在编译时而不是运行时检测错位,您可以使用Hibernate Validator提供的annotation processor。此处理器可以插入javac编译器或IDE中,如果检测到非法约束,将引发编译错误。