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

时间:2015-08-13 03:12:10

标签: java jpa jpa-annotations

我有一个父类,我们称之为父

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 个答案:

答案 0 :(得分:0)

我相信你想要的是Mapped Superclass。确保将注释放在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 */
}