Bean验证范围约束

时间:2016-06-13 05:24:05

标签: java bean-validation hibernate-validator

我需要在Entity数据字段上实现范围限制:

@Entity
@Table(name = "T_PAYMENT")
public class Payment extends AbstractEntity {

    //....

    //Something like that
    @Range(minValue = 80, maxValue = 85)
    private Long paymentType;

}

我已经创建了验证服务,但必须实现其中许多情况。

如果插入的数字超出范围,我需要应用程序抛出异常。

4 个答案:

答案 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 与整数不兼容。