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)