Hibernate 5 @Entity 如何 extends 另一個類

在實際項目設計中,咱們能夠但願在 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進行具體的定義。

https://www.cwiki.us/display/HIBERNATE/questions/57938957

相關文章
相關標籤/搜索