Можно ли переопределить ограничение поля на поле в дочернем классе

У меня есть родительский класс, давайте назовем его Parent

public class Parent {

@Basic(optional = false)
String stringOne;

@Basic(optional = false)
String stringTwo;

    public String getStringOne() {
        return stringOne;
    }
    public void setStringOne(String stringOne) {
        this.stringOne = stringOne;
    }
    public String getStringTwo() {
        return stringTwo;
    }
    public void setStringTwo(String parentTwo) {
        this.stringTwo = parentTwo;
    }
}

Тогда есть около 10 детских классов, вот один из них

public class ChildOne extends Parent{
     @Override
     public String getStringOne() {
        return stringOne;
    }
     @Override
    public String getStringTwo() {
        return stringTwo;
    }
}

Я знаю, что не могу переопределить переменные экземпляра, но возможно ли снять ограничение на дочерний класс. Например, я хотел бы, чтобы объект класса childOne имел null stringOne или null stringTwo, если я хочу. Но другие 9 дочерних объектов могут иметь ограничение из родительского класса.

Наиболее важной частью является то, что я не могу иметь родителя в качестве абстрактного. Я действительно сожалею об этом позднем редактировании.

1 ответ

Я верю в то, что вы хотите, это Mapped Superclass. Убедитесь, что вы помещаете аннотации на ваши получатели, а не на свойства.

@MappedSuperclass
public abstract class Parent {

    String stringOne;

    String stringTwo;

    @Basic(optional = false)
    public String getStringOne() {
        return stringOne;
    }

    @Basic(optional = false)
    public String getStringTwo() {
        return stringTwo;
    }

    /* setters here */
}

@Entity
@Table(name="child_one")
public class ChildOne extends Parent{

    @Override
    @Basic(optional = true)
    public String getStringOne() {
        return stringOne;
    }

    @Override
    @Basic(optional = true)
    public String getStringTwo() {
        return stringTwo;
    }

    /* setters here */
}
Другие вопросы по тегам