2017-08-04 17 views
-1

に10桁を受け入れない、@Max(javax.validation.constraints.Max)は、10桁の整数@Maxエンティティ定義の一部として長いラッパー型

@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というメッセージが表示されます。

IntegerMAX_VALUEを探してみると、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に設定すると、intの値が42になり、longの値が42Lにキャストされてから設定されます。本当に標準的な操作手順。ここでは@Maxについて特別なことはありません。

9999999999を渡すと、intと解釈されて失敗します。 Eclipseはこれを警告していますが、おそらく恐ろしくはないでしょう。 9999999999を渡すには、longとする必要があります。これは、制約を@Max(9999999999L)と指定することを意味します。

関連する問題