- 12、解读Hibernate-Validator官方文档-校验基本注解 @ScriptAssert注解等等使用 http://v.youku.com/v_show/id_XMzk1NjcyMjM1Mg==.html
Hibernate验证器包括常用约束的基本集合。这些首先是由Bean验证规范定义的约束(参见2.3.1节,“Bean验证约束”)。此外,Hibernate Validator提供有用的自定义约束(参见2.3.2节,“附加约束”)。
2.3.1. Bean Validation constraints下面您可以找到bean验证API中指定的所有约束的列表。所有这些约束都应用于字段/属性级别,在Bean验证规范中没有定义类级别的约束。如果您正在使用Hibernate对象-关系映射器,在为模型创建DDL时将考虑一些约束(参见“Hibernate元数据影响”)。
NOTE :Hibernate Validator允许将一些约束应用于比Bean Validation规范要求的更多的数据类型(例如,@Max可以应用于字符串)。依赖该特性会影响应用程序在Bean验证提供者之间的可移植性。
注解
|
说明
|
应用数据范围
|
Hibernate metadata impact
|
@AssertFalse
|
Checks false
|
Boolean, boolean
|
None
|
@AssertTrue
|
Checks true
|
Boolean, boolean
|
None
|
@DecimalMax(value=, inclusive=)
|
检查包含值是否小于指定的最大值,当inclusive=false时。否则,该值是否小于或等于指定的最大值。参数值是根据BigDecimal字符串表示的最大值的字符串表示。
|
数字
|
None
|
@DecimalMin(value=, inclusive=)
|
同上
|
none
|
|
@Digits(integer=, fraction=)
|
检查带注释的值是否为最多具有整数位数和分数位数的数字。
|
数字
|
Defines column precision and scale
|
@Email
|
检查指定的字符序列是否是有效的电子邮件地址。可选参数regexp和标志允许指定电子邮件必须匹配的附加正则表达式(包括正则表达式标志)
|
CharSequence
|
None
|
@Future
|
检查注解日期是否在将来
|
None
|
|
@FutureOrPresent
|
检查注释日期是否在现在或将来(有点闷逼)
|
时间
|
None
|
@Max(value=)
|
检查注释的值是否小于或等于指定的最大值。·
|
数字
|
Adds a check constraint on the column
|
@Min(value=)
|
同上
|
||
@NotBlank
|
检查注释的字符序列不是空的,修剪长度大于0。与@NotEmpty的不同之处在于,这个约束只能应用于字符序列,并且尾随的空白区域被忽略。
|
CharSequence
|
None
|
@NotEmpty
|
Checks whether the annotated element is not null nor empty
|
CharSequence,
Collection, Map and arrays
|
None
|
@NotNull
|
不为空
|
任何类型
|
Column(s) are not nullable
|
@Negative
|
检查元素是否严格为负。零值被认为是无效的。
|
数字
|
None
|
@NegativeOrZero
|
包含0
|
数字
|
None
|
@Null
|
Checks that the annotated value is null
|
任何类型
|
None
|
@Past
|
过去的时间
|
时间
|
None
|
@PastOrPresent
|
过去或者现在
|
时间
|
None
|
@Pattern(regex=, flags=)
|
考虑给定标志匹配,检查注释的字符串是否与正则表达式正则表达式匹配
|
字符串
|
None
|
@Positive
|
检查元素是否严格为正。零值被认为是无效的。
|
数字
|
None
|
@PositiveOrZero
|
|||
@Size(min=, max=)
|
检查注释元素的大小是否在最小和最大之间(包含)。
|
CharSequence, Collection, Map and arrays
|
Column length will be set to max
|
2.3.2. Additional constraints(格外添加的)NOTE : 在上面列出的参数之上,每个约束都有参数消息、组和有效负载。这是bean验证规范的要求。(On top of the parameters listed above each constraint has the parameters message, groups and payload. This is a requirement of the Bean Validation specification.)
除了Bean Validation API定义的约束之外,Hibernate Validator还提供以下列出的一些有用的自定义约束。除了一个例外,这些约束也适用于字段/属性级别,只有@ScriptAssert是类级别的约束。
注解 | 含义 | 作用范围 | Hibernate metadata impact |
---|---|---|---|
@CreditCardNumber(ignoreNonDigitCharacters=) | 检查注释的字符序列是否通过LuHn校验和测试。注意,此验证旨在检查用户错误,而不是信用卡有效性!请参阅信用卡号码的剖析。忽略数字字符允许忽略非数字字符。默认值为false。 | 字符串 | None |
@EAN | 检查注释的字符序列是否是有效的EAN条形码。类型决定条形码的类型。默认为EAN-13。 | 字符串 | None |
@ISBN | 检查注释的字符序列是否是有效的ISBN。类型决定ISBN的类型。默认为ISBN-13 | 字符串 | None |
@Length(min=, max=) | 验证注释的字符序列在最小和最大包含之间。 | 字符串 | Column length will be set to max |
@Range(min=, max=) | 检查注释值是否位于(包含)指定最小值和最大值之间。 | 数字 | None |
@ScriptAssert(lang=, script=, alias=, reportOn=)
| 检查给定脚本是否可以成功地与注释元素进行评估。为了使用这个约束,Java JScript 223定义的Java脚本API的实现(“JavaTM平台的脚本”)必须是类路径的一部分。要评估的表达式可以用任何脚本或表达式语言编写,在类路径中可以找到JSR 223兼容的引擎。即使这是一个类级别的约束,也可以使用reportOn属性来报告特定属性上的约束违反,而不是整个对象。 | 任何(无限可能) | None |
| @UniqueElements | 检查注释的集合只包含唯一的元素。使用equals()方法来确定相等性。默认消息不包括重复元素列表,但是可以通过重写消息并使用{duplicates}消息参数来包括它。重复元素的列表也包含在约束违反的动态有效载荷中。 | Collection | None |