1

hibernate / javax検証のためにクラス階層をオーバーライドすることは可能ですか?または、クラスを拡張してパラメータ検証をオーバーライドする方法はありますか?

アノテーションを使用@Validし、クラスでjavax検証アノテーションを設定しました。検証が削除される拡張クラスが必要です。休止状態の検証はクラス階層全体をループし、スーパークラスでも検証をチェックすることがわかりました。これは、SpringMVCでセットアップされたJsonベースのRESTAPIから使用します。

例:

public class Parent {
    protected Integer numChildren;

    @NotNull(message = "NumChildren has to be set.") 
    @Size(min 1, max 10, message = "A partent has to have at least one kid.")
    public Integer getNumChildren() {
        return numChildren;
    }

    public void setNumChildren(Integer numChilds) {
        this.numChildren = numChilds;
    }
}

public class Child extends Parent {

    // A child doesnt have to have kids, but can, so I want to override this parameter
    // and remove the validation requirement, and make it just optional.
    @Override
    public Integer getNumChildren() {
        return super.numChildren;
    }
}

よろしく、マーカス

4

1 に答える 1

0

Bean Validationでは、スーパークラスの制約を無効化/変更することはできません。制約は常に組み合わされます。行く方法は、 ParentChecksグループやChildChecksグループなどのグループを経由することになると思います。子の親に固有の制約を対応するグループに割り当てます。次に、親のデフォルトグループをParentChecks、_Parent_に再定義し、子のデフォルトグループをChildChecksChildに再定義できます。それはうまくいくはずです。

于 2013-03-22T09:20:46.867 に答える