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

したがって、保険会社と被保険者を表すことができる単一のタイプの人がいます。問題は、Compositeを検証するときに、保険会社のプロパティをInsurer groupで検証し、Insuredで保険をかけたいということです。とにかくそれを達成できるか、 https://hibernate.onjira.com/browse/BVAL-208が解決するのを待つ必要があります...

4

1 に答える 1

0

標準化された方法で問題を解決するには、BVAL-208 (グループ翻訳) に対処する Bean Validation 1.1 を待つ必要があります。

Personクラスにもフラグまたはその他の基準があり、この人が保険会社か被保険者かを判断するために使用できる場合は、カスタム クラス レベルの制約を使用することもできます。欠点は、カスタム制約バリデーターの実装ですべての検証を自分で行う必要があるため、注釈の表現力の一部が失われていることです。

もう 1 つの代替手段 (ここでも、保険者と被保険者を区別する方法が必要です) は、Hibernate Validator 固有のGroupSequenceProviderを使用することです。このようにして、現在の構成を維持でき、Personのタイプに応じて適切なグループを返すだけです。

于 2012-10-05T09:33:54.023 に答える