如何验证休眠验证器上的所有组?

how to validate all groups on hibernate validator?

我有这个模型要验证:

public class ClientDomain {

    public interface AddValidations {
    }

    public interface UpdateValidations {
    }

    private String id;

    @NotNull(groups = {ClientDomain.AddValidations.class})
    @Size(min = 2, max = 10, groups = {ClientDomain.AddValidations.class})
    private String name;

    @NotNull(groups = {ClientDomain.UpdateValidations.class})
    private ClientType type;

    @NotNull(groups = {ClientDomain.AddValidations.class})
    private Gender gender;

.....
}

那么,我是这样验证的:

Set<ConstraintViolation<Object>> violations = this.validator.validate(clientDomain);

这是行不通的,据我所知,这是因为所有约束验证都属于某些组,然后当我不通过组进行验证时,验证器默认采用 javax.validation.group.Default,然后它没有验证任何东西,我是对的吗?如果是这样,那么有没有办法验证所有约束验证,而不管它们属于哪个组?问候!

PD:很明显,我不想这样做:

Set<ConstraintViolation<Object>> violations = this.validator.validate(clientDomain, ClientDomain.AddValidations, ClientDomain.UpdateValidations);

使用继承呢?

如果ClientDomain是你的父界面。你可以这样做:

>> 当:

public interface ClientDomain extends Default {} 
public interface AddValidation extends ClientDomain
public interface UpdateValidation extends ClientDomain

>> 然后

 @NotNull(groups = {UpdateValidations.class})
 private ClientType type;

 @NotNull
 private Gender gender;

在此示例中,Gender 是两个组的强制约束。另一方面,ClientType 仅适用于 UpdateValidation。您将编写更少的代码,并且阅读起来也更清晰。

顺便说一句。 ClientDomain 在此示例中不是必需的。这只是为了更好地发挥想象力,展示您可以用它做什么。

更多详情:hibernate validator docs