validar validacion solo setcustomvalidity pattern numeros letras formularios formulario ejemplos con java constraints precision bean-validation

java - validacion - ¿Por qué las restricciones mín./Máx. De validación de bean no admiten el tipo doble?



validar input javascript (1)

Es por redondeo. Pero no por el problema de que un doble no se corrija lo suficiente como para expresar el número que desea. Es más que el valor de anotación (de Min y Max ) es de tipo largo, por lo que no puede expresar ningún número con posiciones decimales. Por otro lado, no puede usar un doble para expresar todos los números exactos que un largo puede expresar.

Así que los diseñadores de API tuvieron que decidir por una de las dos formas (larga o doble)

¿Podría alguien explicarme por qué la JPA admite el tipo double como tipo de campo, pero la validación del bean se restringe en javax.validation.constraints (es decir, @Min / @Max ) no lo admite? Sé que la documentación dice que esto se debe a errores de redondeo, pero si elijo el tipo de campo para ser double , ya admito que no me importa mucho la precisión explícita.

El escenario que encontré en este dilema es el siguiente: Tengo una Entidad que representa un punto en la superficie de la tierra. Si la precisión está dentro de unos pocos centímetros, está bien. Se ve algo como esto:

@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; }

Desafortunadamente esto no funciona, porque las anotaciones no son compatibles con el tipo doble. Pero usar BigDecimal lugar de BigDecimal no es realmente una opción, porque tengo algunos cálculos extensos con múltiples puntos en curso que aún deben ser razonablemente rápidos. Lo resolví definiendo un control de restricción personalizado que funciona con el double s, pero de alguna manera creo que hay algo que me falta en toda la historia. Entonces, ¿qué me estoy perdiendo?