Java Bean验证组继承无法与组序列提供程序一起使用

Java Bean验证组继承无法与组序列提供程序一起使用,java,validation,inheritance,bean-validation,hibernate-validator,Java,Validation,Inheritance,Bean Validation,Hibernate Validator,我目前正在开发一个应用程序,它可以存储包含国外和国内地址的联系信息,但是这些地址也可以被禁用 我试图定义三个验证组:一个超级组用于始终验证的信息,两个子类用于不同的地址状态 public interface ContactValidation {} public interface DomesticValidation extends ContactValidation {} public interface ForeignValidation extends ContactValidation

我目前正在开发一个应用程序,它可以存储包含国外和国内地址的联系信息,但是这些地址也可以被禁用

我试图定义三个验证组:一个超级组用于始终验证的信息,两个子类用于不同的地址状态

public interface ContactValidation {}
public interface DomesticValidation extends ContactValidation {}
public interface ForeignValidation extends ContactValidation {}
然后我在contact类上定义了@GroupSequenceProvider

public class ContactGroupSequenceProvider implements DefaultGroupSequenceProvider<Contact> {

@Override
public List<Class<?>> getValidationGroups(Contact contact) {
    List<Class<?>> defaultGroupSequence = new ArrayList<Class<?>>();

    if(contact.getIsForeign()){
        defaultGroupSequence.add(Contact.ForeignValidation.class);
    } else {
        defaultGroupSequence.add(Contact.DomesticValidation.class);
    } //TODO: Add Address Disabled Case

    defaultGroupSequence.add(Contact.class); //Get a GroupDefinitionException without this line

    return defaultGroupSequence;
}

任何建议,谢谢

如果返回其中一个子类,我还希望使用ContactValidation标记的约束得到验证。这似乎是Hibernate验证器中的一个bug,所以您可以在我们的系统中打开一个票证吗


作为一种解决方法,您可能会尝试将ContactValidation明确添加到您返回的列表中。

谢谢您的回复,如果这是一个bug,那么我现在就解决它。我的公司目前正在使用Hibernate的4.2.0版本。您知道此问题是否已在更高版本中修复?否则我会为它开罚单。我不记得这方面的任何修正,但如果你能用5.1测试它,并在它仍然存在的情况下创建一个问题,那将非常有用。我的问题是版本4.3.1。最终版本也有同样的问题
@NotBlank(groups={DomesticValidation.class,ForeignValidation.class ,ContactValidation.class})   
private String fullContactName;