Hibernate Validator 第6篇:内建约束

Hibernate Validator包括一些列经常用到的约束,它们已经定义在Bean Validation 规范中。另外,Hibernate Validator也提供了有用的自定义约束。

一、Bean校验约束

在Bean Validation API中,你可以找到很多约束。所有这些约束都可以应用在成员变量,或属性上面,但是在这些约束中,没有类级别的约束。如果你在使用Hibernate 对象-关系映射,一些类级别的约束,可以考虑进来。

Hibernate Validator 的约束类型数量,超过Bean Validation 规范里的约束数量(例如@Max可以应用在String类型上)。依靠这些约束,可以提高程序的性能。

1.1 下面展示一些约束

  • @AssertFalse:检查这个被注解的元素是false。
    • 支持的数据类型:Boolean、boolean。
    • Hibernate 元数据影响:无。
  • @AssertTrue:检查这个被注解的元素是true。
    • 支持的数据类型:Boolean、boolean。
    • Hibernate元数据影响:无。
  • @Decimal(value=, inclusive=):检查被注解的值是否小于指定的最大值,当inclusive=false。否则,检查是否小于或等于指定的最大值。这个参数值是一个String表达式,用来表示最大值。这个String会转化为BigDecimal。
    • 支持的数据类型:BigDecimal,BigInteger,CharSequence,byte,short,int,long和对应基本类型的包装类。另外也支持HV:任何Number和javax.money.MontaryAmount的自类型。
    • Hibernate元数据的影响:无。
  • @DecimalMin(value=, inclusive=):和上面的@DecimalMax的功能正好相反,这里不再赘述。
  • @Digits(integer = fraction=):检查是否被注解的值是一个数字,并且这个数字有integer位整数,fraction位小数。
    • 支持的数据类型:BigDecimal, BigInteger, CharSequence, byte, short, int, long和对应的包装类;另外,还支持HV的Number的任何子类。
    • Hibernate元数据影响:定义列精度和小数范围。
  • @Email:检查指定的字符串是否是一个有效的邮箱地址。这个可选参数regexp和flags允许去指定一个额外的正则表达式,并被被注解的字符串去匹配。
    • 支持的类型:CharSequence.
    • Hibernate元数据影响:无。
  • @Future:检查被注解的date是否是在未来的某个时间。
    • 支持的类型:
      • java.util.Date,
      • java.util.Calendar,
      • java.time.Instant,
      • java.time.LocalDate,
      • java.time.LocalDateTime,
      • java.time.LocalTime,
      • java.time.MonthDay,
      • java.time.OffsetDateTime,
      • java.time.OffsetTime,
      • java.time.Year,
      • java.time.YearMonth,
      • java.time.ZonedDateTime,
      • java.time.chrono.HijrahDate,
      • java.time.chrono.JapaneseDate,
      • java.time.chrono.MinguoDate,
      • java.time.chrono.ThaiBuddhistDate。
      • Hibernate元数据影响:无。
  • @FutureOrPresent:检查是否被注解的date是在现在或者是在未来的某个时刻。
    • 支持的数据类型:
      • java.util.Date,
      • java.util.Calendar,
      • java.time.Instant,
      • java.time.LocalDate,
      • java.time.LocalDateTime,
      • java.time.LocalTime,
      • java.time.MonthDay,
      • java.time.OffsetDateTime,
      • java.time.OffsetTime,
      • java.time.Year,
      • java.time.YearMonth,
      • java.time.ZonedDateTime,
      • java.time.chrono.HijrahDate,
      • java.time.chrono.JapaneseDate,
      • java.time.chrono.MinguoDate,
      • java.time.chrono.
      • ThaiBuddhistDate。
    • 另外如果Joda.Time date/time API在类路径中的话,也支持HV。
      还有任何实现了ReadablePartial和ReadableInstant的子类。
    • Hibernate元数据影响:无。

这只是Bean Validation API中的部分注解,后面还有Hibernate Validator额外自己的注解。

下篇会讲Hibernate Validator自己的注解。

全部评论

相关推荐

6月down后继续尝试~【intro】我是UCL(qs top 10)城市空间科学硕士,本科是211机械设计制造及自动化(有工科逻辑底子👩🏻‍💻)过去几年,我的经历有点“跨界”,但核心一直围绕着 数据分析 + 空间信息 + 可持续发展。📍林火遥感监测的研究(发表Remote Sensing论文);📍在浙大某实验室和关联企业中做过与数字孪生、碳排放评估相关的项目,参与一些算法和技术文件的编写。📍python/GIS研究伦敦超低排放区政策(ULEZ)对空气质量的影响;看起来跨度有些大,我其实一直在寻找同一个方向——用数据与空间技术理解和优化真实世界。(🔎详情CV哦)【认真碎碎念】今年6月后迫于求职环境压力,我申请了部分PhD(ESG、城市交通排放、碳中和方向♻️),期间主要在充实研究能力、读文献📄、和导师🧑‍🏫沟通,也因此有一段“空窗期”,希望遇到【不介意】我处于探索发展路径的伯乐呀(福利:面试官还有机会解锁这位 理工+人文混血体 的有趣副业经历👾)。【意向岗位/城市】希望寻找一份能结合我背景和「兴趣」的工作。意象方向:🌍 GIS / 遥感 / 城市数据分析🏙️ 智慧城市、可持续发展研究🌱 碳中和、环境数据分析、ESG政策研究(感兴趣也正学习ing)💡 技术与策略结合的岗位,如数据顾问、其他科技方向的项目助理|解决方案|科研研究助理等等意向地点:上海 / 深圳 /香港(接受Hybrid或部分远程)。希望能加入一个包容多元复合型背景、愿意给年轻人自我学习自我成长机会的团队,不介意我“跨界”的路径,更看重逻辑能力、学习力和独立思考的硬实力和软实力。
你觉得哪一届的校招最难?
点赞 评论 收藏
分享
SaviorSu:直接说下学期可以请假,一般情况学校允许我26届,大三就直接去实习了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务