使用Bean Validation在字段上可选的多个相同约束

时间:2012-06-05 11:26:35

标签: java validation jpa-2.0 hibernate-validator

我试图在插入数据库之前使用Hibernate验证器来验证POJO。

bean中有一个字段,长度可以是8或10。

我尝试使用内置约束List将它们组合在一起,期望其中一个条件通过,而不是验证通过。

@Length.List({@Length(min=8, max=8,message="Code is either 8 or 10 characters in length"),@Length(min=10, max=10,message="Code is either 8 or 10 characters in length")})
public String getCode() {
    return this.code;
}

但是,结果显示列表中的所有条件都必须通过以使其有效。所以我想知道反正是为了进行OR检查。

1 个答案:

答案 0 :(得分:2)

我认为这个注释的工作方式是这样的:

@Length(min = 8, max = 10)  
public String getCode() {
   return code;
}

换句话说,9也将被视为有效,这不是您正在寻找的。我不确定是否有办法在Hibernate注释中对它们进行两次验证和OR操作。

看起来你可以使用@Pattern验证:

@Pattern(regexp="(.{8}|.{10})", message="Should either be 8 or 10 characters")
public String getCode() {
   return code;
}