2017-04-12 19 views
0

私は、HibernateバリデータをHV000030:いいえバリデータが制約「javax.validation.constraints.Size」の検証タイプに見つかりませんでした「java.util.Map」

検証ロジック

を使って豆の検証機能を使用しています
public enum ValidatorFactory { 
    SINGLE_INSTANCE { 

    javax.validation.ValidatorFactory avf = Validation.buildDefaultValidatorFactory(); 

    @Override 
    public Validator getValidator() { 
    return avf.getValidator(); 
    } 

    }; 

    public abstract Validator getValidator(); 
} 

私は

@UnwrapValidatedValue 
@Valid 
@Size(min = 1, max = 9) 
private Optional<Map<Integer, AreaType>> field; 

以下のエラー javax.validation.UnexpectedTypeExceptionのような任意のフィールドを持つオブジェクトにvalidator.validate(OBJ)を呼んでいる:HV000を030:制約 'javax.validation.constraints.Size'検証型 'java.util.Map'のバリデータが見つかりませんでした。 JPAの資料によると

答えて

0

フィールドまたはプロパティの大きさが評価され、 指定された境界と一致する必要があります。フィールドまたはプロパティがStringの場合、文字列のサイズ が評価されます。フィールドまたはプロパティがCollectionの場合、 コレクションのサイズが評価されます。フィールドまたはプロパティが マップの場合、マップのサイズが評価されます。フィールドまたはプロパティが の配列の場合、配列のサイズが評価されます。境界を指定するには、オプションのmax またはmin要素のいずれかを使用します。

これは、@Sizeをオプションの型に置くことはできませんが、文字列、コレクション、および配列に対してのみ行うことができます。

@Size(min = 1, max = 9) 
private Map<Integer, AreaType> field; 

はこのように、オプションのタイプを削除するようにしてください

関連する問題