解决方法如下所述:
将您的Parent
类定义为 MappedSuperClass 。假设父类映射到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
}
对于每个子类,扩展AbstractParent
该类并定义其 SecondaryTable 。父类中定义的任何持久字段都将映射到_SecondaryTable_ 定义的表。最后,如果需要,请使用AttributeOverrides
@Entity
@SecondaryTable("PARENT_TABLE")
public class Child extends AbstractParent {
private String childField;
public String getChildproperty() {
return childField;
}
}
@Entity
@Table(name="PARENT_TABLE")
@AttributeOverrides({
@AttributeOverride(name="someProperty", column=@Column(name="someProperty"))
})
public class Parent extends AbstractParent {}
没有其他的。如上所示,我仅使用了JPA特定的批注