1. 程式人生 > >SpringData JPA 中 @MappedSuperclass 註解的使用

SpringData JPA 中 @MappedSuperclass 註解的使用

在進行實體類的封裝時,有時候幾張表中可能有很多的共同屬性。每次都去建立不同的類很麻煩。這個時候可以建立一個共同屬性的類,讓其他類去繼承這個類。然後對映到資料表中,

這個時候使用@MappedSuperclass 註解會很有用處 


1.@MappedSuperclass註解只能標準在類上@Target({java.lang.annotation.ElementType.TYPE})

2.標註為@MappedSuperclass的類將不是一個完整的實體類,他將不會對映到資料庫表,但是他的屬性都將對映到其子類的資料庫欄位中。

3.標註為@MappedSuperclass的類不能再標註@Entity或@Table註解

,也無需實現序列化介面

但是如果一個標註為@MappedSuperclass的類繼承了另外一個實體類或者另外一個同樣標註了@MappedSuperclass的類的話,他將可以使用@AttributeOverride或@AttributeOverrides註解重定義其父類(無論是否是實體類)的屬性對映到資料庫表中的欄位。

比如可以重定義欄位名或長度等屬性,使用@AttributeOverride中的子屬性@Column進行具體的定義。