Java 验证组继承

Java 验证组继承,java,hibernate,bean-validation,hibernate-validator,Java,Hibernate,Bean Validation,Hibernate Validator,给定以下类和接口 class Person { @NotNull(groups=Both.class) private String name; } 验证组: interface One {} interface Two {} interface Both extends One, Two {} 打电话的时候 Person person = new Person(); validator.validate(person, One.class) 或 我希望它应该是无效的,因为n

给定以下类和接口

class Person {

  @NotNull(groups=Both.class)
  private String name;
}
验证组:

interface One {}
interface Two {}
interface Both extends One, Two {}
打电话的时候

Person person = new Person();

validator.validate(person, One.class) 

我希望它应该是无效的,因为name是null,但它不是。
事实证明,只有在validator.validate(…,Both.class)方法中使用组Both.class时才有用。

继承方向错误。
Both
组扩展了
One
Two
,您可以将其视为“
Both
包含
One
Two
”。这意味着,每次您针对
Both
组进行验证时,组
One
Two
的所有约束也包含在
Both
中,并因此进行验证

但情况并非如此:属于组
Both
的约束不是
One
的一部分,也不是
Two
的一部分。因此,如果验证组
One
的约束,则不会验证属于这两个组的约束


请参阅以获取参考。

继承方向错误。
Both
组扩展了
One
Two
,您可以将其视为“
Both
包含
One
Two
”。这意味着,每次您针对
Both
组进行验证时,组
One
Two
的所有约束也包含在
Both
中,并因此进行验证

但情况并非如此:属于组
Both
的约束不是
One
的一部分,也不是
Two
的一部分。因此,如果验证组
One
的约束,则不会验证属于这两个组的约束


请参阅以获取参考。

您的问题是什么?@hooknc我希望它应该是无效的,因为name为null,但它不是。您的问题是什么?@hooknc我希望它应该是无效的,因为name为null,但它不是。谢谢!如果我有很多组(a,B,C,D,E,F.class),我必须在注释@NotNull中列出它们(组={a,B,C,D,E,F.class})?不太好,谢谢!如果我有很多组(a,B,C,D,E,F.class),我必须在注释@NotNull中列出它们(组={a,B,C,D,E,F.class})?不好的。
validator.validate(person, Two.class)