有人可以向我解释一下为什么 JPA 支持double
type 作为字段类型,但 bean 验证约束javax.validation.constraints
(i.e. @Min http://java.sun.com/javaee/6/docs/api/javax/validation/constraints/Min.html/@Max http://java.sun.com/javaee/6/docs/api/javax/validation/constraints/Max.html)不支持?
我知道文档说这是由于舍入错误造成的,但如果我选择字段类型为double
我已经承认我不太关心显式精度。
我遇到这种困境的场景如下:我有一个代表地球表面上的一个点的实体。如果精度在几厘米以内就可以了。它看起来像这样:
@Entity
public class Point {
/**
* The longitude in radians.
*/
@Min(-Math.Pi)
@Max(Math.Pi)
double longitude;
/**
* The latitude in radians.
*/
@Min(-Math.Pi / 2)
@Max(Math.Pi / 2)
double latitude;
}
不幸的是这不起作用,因为注释不支持 double 类型。但使用BigDecimal
相反,这并不是一个真正的选择,因为我有一些涉及多个点的大量计算,但仍然需要相当快的速度。我通过定义一个可以使用的自定义约束检查来解决这个问题double
s,但不知怎的,我觉得整个故事中我遗漏了一些东西。那么,我错过了什么?
Use the @DecimalMin
注解。
您将需要传递一个文字字符串值,因为该属性value
必须是常量 (String.valueOf(- Math.PI)) 不起作用。
它用于验证 Double 属性。
@DecimalMin(value = "0.01", message = "Your message...")
private Double longitude;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)