0

在验证与特定类型的 bean 具有多个关系但每个关系必须以不同方式验证的对象时,我遇到了一个问题。复合类:

public class Composite{
  @Valid
  private Person insurer;
  @Valid
  private Person insured;
  ...(other properties)
  private String foo;
}

人物类:

public class Person{
@NotNull(groups={Insurer.class,Insured.class})
private String name;
@NotNull(groups={Insurer.class,Insured.class})
private String surname;
...
@NotNull(groups={Insurer.class})
private String ssn;
}

所以我们有一个单一类型的 Person 可以代表保险人和被保险人。问题是,在验证 Composite 时,我希望让保险公司的财产与 Insurer 集团一起验证并由 Insured 投保。无论如何它可以完成还是我需要等待https://hibernate.onjira.com/browse/BVAL-208解决...

4

1 回答 1

0

要以标准化的方式解决您的问题,您确实必须等待 Bean Validation 1.1,它将解决 BVAL-208(组翻译)。

如果您的Person类还有一个标志或其他一些标准,您可以使用它来确定此人是保险公司还是被保险人,您还可以使用自定义类级别约束。缺点是您失去了注释的一些表现力,因为您必须在自定义约束验证器实现中自己进行所有验证。

另一种选择(同样您需要一种区分保险公司和被保险人的方法)是使用 Hibernate Validator 特定的GroupSequenceProvider。这样,您可以保留当前配置,并且您只需根据Person的类型返回正确的组。

于 2012-10-05T09:33:54.023 回答