2015-08-13 57 views
2

我有一个父类可称之为父是否可以覆盖一个字段的字段限制在一个子类

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类对象具有空stringOne或空stringWwo,如果我想。但其他9个子对象可以具有父类的约束。

最重要的部分是我不能把父母作为抽象。我很抱歉这个最近的编辑。

回答

0

我相信你想要的是一个映射超类。确保你把注释放在你的getters上,而不是属性本身。

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

非常感谢,我会试一试。 –

+0

对不起,我刚刚看到这个,但我不能将父母声明为摘要。 –

+0

为什么?这是做映射超类的典型方式。它不一定是抽象的,但通常是。 – teacurran

相关问题