2

我有一个父类让我们称它为 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 个子对象可以有来自父类的约束。

最重要的部分是我不能将父级作为摘要。对于这个迟到的编辑,我真的很抱歉。

4

1 回答 1

0

我相信你想要的是一个映射的超类。确保将注释放在 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 */
}
于 2015-08-13T03:56:26.160 回答