Можно ли наследовать аннотацию @Size hibernate? - PullRequest
1 голос
/ 16 октября 2011

Я пытаюсь использовать проверку гибернации для проверки размера списка.в общем, я хочу, чтобы список был пустым, если только он не является объектом типа B.кажется, не работает:

public static class A
{
    private List<Integer> inheritedRemoveAnnotation = new ArrayList<Integer>();

    @Size(max=0)
    public List<Integer> getInheritedRemoveAnnotation()
    {
        return inheritedRemoveAnnotation;
    }
}
public static class B extends A
{
    @Override
    @Size(max=Integer.MAX_VALUE)
    public List<Integer> getInheritedRemoveAnnotation()
    {
        return super.getInheritedRemoveAnnotation();
    }
}

private static Validator m_validator = Validation.buildDefaultValidatorFactory().getValidator();
public static void main(String[] args)
{
    B b = new B();
    b.getInheritedRemoveAnnotation().add(1);
    System.out.println(m_validator.validate(b));
}

Вывод, который я получаю:
[ConstraintViolationImpl{interpolatedMessage='size must be between 0 and 0', propertyPath=inheritedRemoveAnnotation, rootBeanClass=class oshai.hibernatevalidators.TestInheritence$B, messageTemplate='{javax.validation.constraints.Size.message}'}]

1 Ответ

2 голосов
/ 17 октября 2011

Все ограничения, находящиеся где-то в иерархии, также проверяются. Согласно документации :

Аннотации ограничений объединяются, если методы переопределены.

...