我需要在Entity数据字段上实现范围限制:
@Entity
@Table(name = "T_PAYMENT")
public class Payment extends AbstractEntity {
//....
//Something like that
@Range(minValue = 80, maxValue = 85)
private Long paymentType;
}
我已经创建了验证服务,但必须实现其中许多情况。
如果插入的数字超出范围,我需要应用程序抛出异常。
答案 0 :(得分:5)
您需要Hibernate Validator(see documentation)
Hibernate Validator
Bean Validation参考实现。
应用程序层不可知验证Hibernate Validator 允许 表达并验证应用程序约束。默认元数据 source是注释,具有覆盖和扩展的能力 通过使用XML。它不依赖于特定的应用程序层 或编程模型,可用于服务器和客户端 应用编程。但一个简单的例子说超过1000 词:
public class Car { @NotNull private String manufacturer; @NotNull @Size(min = 2, max = 14) private String licensePlate; @Min(2) private int seatCount; // ... }
答案 1 :(得分:1)
使用hibernate-validator
依赖关系,您可以定义范围检查
@Min(value = 80)
@Max(value = 85)
private Long paymentType;
在pom.xml
添加以下依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>{hibernate.version}</version>
</dependency>
答案 2 :(得分:0)
对于整数和长整数,您可以使用@Min(value = 80)
@Max(value = 85)
对于BigDecimal @DecimalMin(value = "80.99999")
@DecimalMax(value = "86.9999")
答案 3 :(得分:0)
我相信这是您正在寻找的特定注释: https://docs.jboss.org/hibernate/validator/4.1/api/org/hibernate/validator/constraints/Range.html
示例:
@Range(min = 1, max =12)
private String expiryMonth;
这也是一个更有益的注释,因为它可以在字符串或数字变体上工作,而无需使用两个注释,就像@Max/@Min 的情况一样。 @Size 与整数不兼容。