2017-08-04 116 views
-1

作为实体定义的一部分,@Max(javax.validation.constraints.Max)不会采取上限值,以验证一个10位数的整数@Max不接受长包装类型10位

@Min(0) 
@Max(9999999999) 
@Column(name = "some_column", nullable = false, 
    columnDefinition = "INT(10) NOT NULL") 
private Integer someColumn; 

Eclipse在第二行浮动一个红色标记,并显示消息The value for annotation attribute Max.value must be a constant expression

我翻遍找到MAX_VALUEInteger只能找到它2147483647这也是10位数字。

注:hibernate-core:5.0.12validation-api:2.0.0.CR3

我修改的型长包装

@Min(0) 
@Max(9999999999) 
@Column(name = "some_column", nullable = false, 
    columnDefinition = "INT(10) NOT NULL") 
private Long someColumn; 

但是,还是错误是固执。

回答

1

将参数@Max定义为long。将其设置为例如42表示将int42转换为long的值42L,然后进行设置。标准操作程序,真的。 @Max没什么特别的。

当你通过9999999999它试图将其解释为int并失败。 Eclipse正在警告你,可能不是非常清楚。要通过9999999999,您需要将其作为long来执行,这意味着将约束指定为@Max(9999999999L)