在實際項目設計中,咱們能夠但願在 JPA 中定義 @Entity 表。java
可是在這個 @Entity 類中,咱們但願 extends 另一個類,在另一個類中咱們能夠把一些通用的屬性設置到裏面。數據庫
例如:app
public class Covid19Current extends DataObject implements java.io.Serializable {ide
}spa
那麼咱們應該在 DataObject 添加什麼註解?設計
須要在 DataObject 中添加 @MappedSuperclass 註解。blog
能夠定義成以下:繼承
@MappedSuperclass
public abstract class DataObject {
}接口
@MappedSuperclass註解只能標準在類上:@Target({java.lang.annotation.ElementType.TYPE})rem
標註爲@MappedSuperclass的類將不是一個完整的實體類,他將不會映射到數據庫表,可是他的屬性都將映射到其子類的數據庫字段中。
標註爲@MappedSuperclass的類不能再標註@Entity或@Table註解,也無需實現序列化接口。
可是若是一個標註爲@MappedSuperclass的類繼承了另一個實體類或者另一個一樣標註了@MappedSuperclass的類的話,他將能夠使用@AttributeOverride或@AttributeOverrides註解重定義其父類(不管是不是實體類)的屬性映射到數據庫表中的字段。
好比能夠重定義字段名或長度等屬性,使用@AttributeOverride中的子屬性@Column進行具體的定義。