A workaround is described below:
Define your Parent
class as MappedSuperClass. Let's suppose the parent class is mapped To PARENT_TABLE
@MappedSuperClass
public abstract class AbstractParent implements Serializable {
@Id
@GeneratedValue
private long id;
@Column(table="PARENT_TABLE")
private String someProperty;
// getter's and setter's
}
For each subclass, extend the AbstractParent
class and define its SecondaryTable. Any persistent field defined in the parent class will be mapped to the table defined by SecondaryTable. And finally, use AttributeOverrides if needed
@Entity
@SecondaryTable("PARENT_TABLE")
public class Child extends AbstractParent {
private String childField;
public String getChildProperty() {
return childField;
}
}
And define another Entity with the purpose of retrieving just the parent class
@Entity
@Table(name="PARENT_TABLE")
@AttributeOverrides({
@AttributeOverride(name="someProperty", column=@Column(name="someProperty"))
})
public class Parent extends AbstractParent {}
Nothing else. See as shown above i have used just JPA specific annotations
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…