是否可以覆盖子类中字段上的Field约束



我有一个父类命名为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;
    }
}

我知道我不能重写实例变量,但是有可能删除子类上的约束吗?例如,我想要的childdone类对象有空stringOne或空stringTwo,如果我想。但是其他9个子对象可以有来自父类的约束。

最重要的部分是,我不能有父作为一个抽象。很抱歉编辑晚了。

我相信您需要的是一个映射的超类。请确保将注释放在getter上,而不是属性本身。

@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 */
}

最新更新