在@Min
(javax.validation.constraints.Min
)的javadoc中,它声明只能验证数值。
@Target(值= {METHOD,FIELD,ANNOTATION_TYPE,构造函数,PARAMETER}) @Retention(value = RUNTIME)@Documented @Constraint(validatedBy = {}) public @interface Min
带注释的元素必须是值必须更高或更高的数字 等于指定的最小值。
支持的类型是:
BigDecimal BigInteger byte, short, int, long, and their respective wrappers
请注意,由于舍入错误,不支持double和float (某些提供商可能会提供一些近似支持)
null元素被认为是有效的
当我将注释添加到String时,它获取String的值并将其转换为BigDecimal,然后检查该值。好像String包含BigDecimal值。
问题:
请参阅Eclipse(编译器)消息:
javax.validation.constraints.Min约束支持以下类型:java.math.BigDecimal,java.math.BigInteger,byte,short,int,long及其各自的包装类型。
Test.java
import javax.validation.constraints.Min;
public class Test {
@Min(10)
String quantity;
}
代码按预期工作。
答案 0 :(得分:0)
您可能正在使用Hibernate Validator作为Bean Validation API的实现。引用its documentation:
BigDecimal,BigInteger,byte,short,int,long和原始类型的相应包装器;另外由HV支持:任何子类型的CharSequence(由char序列表示的数值被评估),任何子类型的数字
正如您在问题中正确说明的那样,@Min
注释的Bean验证规范并未要求实现者支持String
(或CharSequence
)。这只是一个Hibernate功能,可能无法与其他实现一起使用。
请注意,在appendix C of the spec中,会出现以下内容:
持久性提供程序应该可以选择识别并尝试应用 以下约束:
- @Min / @Max on numeric columns(TODO String too?)