zoukankan      html  css  js  c++  java
  • hibernate_validator_08

    内置的约束条件

    Hibernate Validator包含了一些基本的使用比较广的约束,下面是一些Hibernate Validator给出的最常用的约束.另外Hibernate Validator还提供了一些有有的custom约束.

    一.Bean Validation constraints

    下面是一些常的constraints,它们的作用,支持的数据类型.它们全部都是属性级别的注释,如果你使用Hibernate 对象-关系映射,当你为你的model创建ddl时,有一些约束是要被考虑在内的.

    注意:Hibernate Validator的有些约束是能支持比Bean Validation specification要求的数据类型的更多的类型.e.g. @Max can be applied to Strings

     
    Annotation

    Supported data types

    作用 Hibernate metadata impact
    @AssertFalse Boolean ,  boolean 

    Checks that the
    annotated element
    is false .

    没有
     @AssertTrue  Boolean ,  boolean  

    Checks that the
    annotated element
    is true .

     没有
     @DecimalMax  

    BigDecimal ,
    BigInteger , String ,
    byte , short , int ,
    long and the
    respective wrappers
    of the primitive
    types. Additionally
    supported by
    HV: any sub-type

    of Number and
    CharSequence .

     

    被标注的值必须
    不大于约束中指定
    的最大值. 这个约
    束的参数是一个通
    过 BigDecimal 定义的最
    大值的字符串表示.

     没有
    @DecimalMin  

    BigDecimal ,
    BigInteger , String ,
    byte , short , int ,
    long and the
    respective wrappers
    of the primitive
    types. Additionally
    supported by
    HV: any sub-type
    of Number and
    CharSequence .

     

    被标注的值必须
    不小于约束中指定
    的最小值. 这个约
    束的参数是一个通
    过 BigDecimal 定义的最
    小值的字符串表示.

     没有

    @Digits(integer=,
    fraction=

    BigDecimal ,
    BigInteger , String ,
    byte , short , int ,
    long and the
    respective wrappers
    of the primitive
    types. Additionally
    supported by
    HV: any sub-type
    of Number and
    CharSequence .

    Checks whether the
    annoted value is a
    number having up to
    integer digits and
    fraction fractional
    digits

    对应的数据库表
    字段会被设置精度
    (precision)和准度
    (scale).

    @Future

    java.util.Date ,
    java.util.Calendar ;
    Additionally
    supported by HV,
    if the Joda Time
    [http://joda-
    time.sourceforge.net/
    ] date/time API is
    on the class path:
    any implementations
    of ReadablePartial
    and ReadableInstant .

     

    检查给定的日期是否
    比现在晚.

     没有
     @Max  

    BigDecimal ,
    BigInteger , byte ,
    short , int , long
    and the respective
    wrappers of the
    primitive types.
    Additionally
    supported by HV:
    any sub-type of
    CharSequence (the
    numeric value
    represented by the
    char sequence is
    evaluated), any
    sub-type of Number .

     

    检查该值是否大于或
    等于约束条件中规定
    的最大值

     

    会给对应的数据库表
    字段添加一个check的
    约束条件.

    @Min   

    BigDecimal ,
    BigInteger , byte ,
    short , int , long
    and the respective
    wrappers of the
    primitive types.
    Additionally
    supported by HV:
    any sub-type of
    CharSequence (the
    numeric value
    represented by the
    char sequence is
    evaluated), any
    sub-type of Number .

    检查该值是否大于或
    等于约束条件中规定
    的最小值.

    的最小值.
    会给对应的数据库表
    字段添加一个check的
    约束条件.

    @NotNull Any type

    Checks that the
    annotated value is
    not null.

    对应的表字段不允许
    为null.

    @Null Any type

    Checks that the
    annotated value is
     null.

    没有

     @Past  

    java.util.Date ,
    java.util.Calendar ;
    Additionally
    supported by HV,
    if the Joda Time
    [http://joda-
    time.sourceforge.net/
    ] date/time API is
    on the class path:
    any implementations

    of ReadablePartial
    and ReadableInstant .

    检查标注对象中的值
    表示的日期比当前早.

    没有

    @Pattern(regex=,
    flag=

    String . Additionally
    supported by HV:
    any sub-type of
    CharSequence

    检查该字符串是否能
    够在 match 指定的情况
    下被 regex 定义的正则
    表达式匹配.

     没有
     @Size(min=, max=)  

    String , Collection ,
    Map and arrays .
    Additionally
    supported by HV:
    any sub-type of
    CharSequence .

     

    Checks if the
    annotated element's
    size is between
    min and max
    (inclusive).

    对应的数据库表字段
    的长度会被设置成约
    束中定义的最大值.

     
     @Valid   

    Any non-primitive
    type

     

    递归的对关联对象进
    行校验, 如果关联对
    象是个集合或者数组,
    那么对其中的元素进
    行递归校验,如果是一
    个map,则对其中的值
    部分进行校验

     没有
    注意:        这些约束都能支持message,groups,payload的参数

    二,Additional constraints

    除了Bean Validation API Hibernate Validator中的约束外,还有一些有用的定制的约束.其中@ScriptAssert是一个类级别的注释

    Annotation

    Supported data
    types

    作用

    Hibernate metadata
    impact

    @CreditCardNumber CharSequence

    Checks that the
    annotated character
    sequence passes
    the Luhn checksum

    test. Note, this
    validation aims
    to check for
    user mistakes,
    not credit card
    validity! See
    also Anatomy
    of Credit Card
    Numbers [http://
    www.merriampark.com/
    anatomycc.htm].

    没有
    @Email CharSequence

    Checks whether the
    specified character
    sequence is a valid
    email address. The
    optional parameters
    regexp and flags
    allow to specify
    an additional
    regular expression
    (including regular
    expression flags)
    which the email
    must match.

     没有
     @Length(min=, max=)  CharSequence  

    Validates that
    the annotated
    character sequence
    is between min and
    max included.

     

    对应的数据库表字段
    的长度会被设置成约
    束中定义的最大值

     

    @ModCheck(modType=,
    multiplier=,
    startIndex=,
    endIndex=,
    checkDigitPosition=,
    ignoreNonDigitCharacters=)

     CharSequence  

    Checks that the
    digits within
    the annotated
    character sequence
    pass the mod 10
    or mod 11 checksum
    algorithm. modType
    is used to select
    the modulo type
    and the multiplier
    determines the
    algorithm specific

    multiplier
    (see also Luhn
    algorithm [http://
    en.wikipedia.org/
    wiki/
    Luhn_algorithm]).
    startIndex and
    endIndex allow
    to only run the
    modulo algorithm
    on the specified
    sub-string.
    checkDigitPosition
    allows to use
    an arbitrary
    digit within
    the character
    sequence to be the
    check digit. If
    not specified it
    is assumed that
    the check digit
    is part of the
    specified range.
    Last but not least,
    ignoreNonDigitCharacters
    allows to
    ignore non digit
    characters.

     没有
     @NotBlank  CharSequence  

    Checks that the
    annotated character
    sequence is not
    null and the
    trimmed length is
    greater than 0.
    The difference to
    @NotEmpty is that
    this constraint
    can only be applied
    on strings and
    that trailing

    whitespaces are
    ignored.

     没有
     @NotEmpty  

    CharSequence ,
    Collection , Map and
    arrays

     

    Checks whether the
    annotated element
    is not null nor
    empty

     没有
     @Range(min=, max=)  

    BigDecimal ,
    BigInteger ,
    CharSequence , byte ,
    short , int , long
    and the respective
    wrappers of the
    primitive types

     

    Checks whether
    the annotated
    value lies between
    (inclusive) the
    specified minimum
    and maximum.

     没有
     

    @SafeHtml(whitelistType=,
    additionalTags=)

     CharSequence  

    Checks whether
    the annotated
    value contains
    potentially
    malicious fragments
    such as <script/
    > . In order to use
    this constraint,
    the jsoup [http://
    jsoup.org/] library
    must be part of the
    class path. With
    the whitelistType
    attribute
    predefined
    whitelist types
    can be chosen. You
    can also specify
    additional html
    tags for the
    whitelist with
    the additionalTags
    attribute.

     没有
     

    @ScriptAssert(lang=,
    script=, alias=)

     Any type  

    Checks whether the
    given script can
    successfully be
    evaluated against
    the annotated

    element. In
    order to use this
    constraint, an
    implementation
    of the Java
    Scripting API as
    defined by JSR 223
    ("Scripting for the
    Java TM Platform")
    must part of the
    class path. The
    expressions to
    be evaluated can
    be written in
    any scripting
    or expression
    language, for
    which a JSR 223
    compatible engine
    can be found in the
    class path.

     没有
     

    @URL(protocol=,
    host=, port=,
    regexp=, flags=)

     CharSequence  

    Checks if the
    annotated character
    sequence is a valid
    URL according to
    RFC2396. If any
    of the optional
    parameters protocol ,
    host or port are
    specified, the
    corresponding URL
    fragments must
    match the specified
    values. The
    optional parameters
    regexp and flags
    allow to specify
    an additional
    regular expression
    (including regular
    expression flags)

    which the URL must
    match.

     没有

     三, Country specific constraints(略)

  • 相关阅读:
    Redis 数据结构之dict
    分布式一致性算法——paxos
    分布式事务、两阶段提交协议、三阶提交协议
    MySQL主从数据同步延时分析
    MySQL数据丢失情况分析
    INSERT ... ON DUPLICATE KEY UPDATE Syntax
    分布式系统的数据一致性
    分布式系统的BASE理论
    分布式系统的CAP理论
    性能指标体系构建
  • 原文地址:https://www.cnblogs.com/wangyang108/p/5670175.html
Copyright © 2011-2022 走看看