gpt4 book ai didi

java - 为什么 bean 验证 Min/Max 约束不支持 double 类型?

转载 作者:IT老高 更新时间:2023-10-28 20:48:02 24 4
gpt4 key购买 nike

有人可以向我解释为什么 JPA 支持 double 类型作为字段类型,但 bean 验证包含在 javax.validation.constraints 中(即 @Min/@Max ) 不支持吗?我知道文档说这是由于舍入错误,但如果我选择字段类型为 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 一起工作的自定义约束检查来解决它,但不知何故,我认为我在整个故事中遗漏了一些东西。那么,我错过了什么?

最佳答案

使用 @DecimalMin 注释。您将需要传递一个文字字符串值,因为属性 value 必须是常量 (String.valueOf(- Math.PI)) 不起作用。它适用于验证 Double 属性。

@DecimalMin(value = "0.01", message = "Your message...")
private Double longitude;

关于java - 为什么 bean 验证 Min/Max 约束不支持 double 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7422803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com