1

是否可以覆盖类层次结构以进行 hibernate/javax 验证?或者如何通过扩展类来覆盖参数验证?

使用@Valid注释并在我的类中设置了 javax 验证注释。我想要一个扩展类,其中删除了验证。我发现休眠验证循环遍历整个类层次结构,甚至在超类中检查验证。我从使用 Spring MVC 设置的基于 Json 的 REST API 中使用它。

例子:

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 does not allow to disable/change constraints in super classes. Constraints are always combined. I guess the way to go would be via groups, eg a ParentChecks group and a ChildChecks group. Assign the constraints which are specific to parent of child to the corresponding group. You can then redefine the default group for parent to be ParentChecks,_Parent_ and the one for child to be ChildChecks, Child. That should work.

于 2013-03-22T09:20:46.867 回答