Bean验证:@Digits验证器是否支持Do​​uble?

时间:2013-12-08 13:11:40

标签: java hibernate validation bean-validation hibernate-validator

在Bean验证规范(版本JSR 303JSR 349)和docs中,两者都没有提及@Digits对Double或Float类型的支持。它只表示它支持以下类型:

  • 的BigDecimal
  • 的BigInteger
  • 的CharSequence
  • byte,short,int,long及其各自的包装类型

但是,我对我的实体中的Double字段进行了多次测试,我发现它运行良好!

它有任何我看不到的缺点吗?不鼓励在Double中使用它吗?

此外,我发现文档明确说明@Min@Max不支持Double和Float。但是,@Digits

并不是那么清楚

2 个答案:

答案 0 :(得分:1)

Double是浮点数,不能很好地描述十进制数。当发生舍入错误并且分数位数可以改变时。

答案 1 :(得分:1)

Hibernate Validator实际上支持任何@Digits类型的Number,因此也支持Double / double。这是通过从给定数字的字符串表示创建BigDecimal来完成的。由于规范没有规定此行为,因此可能无法与其他Bean Validation提供程序一起使用。