在Jpa里, 當我們在定義多個實體類時, 可能會遇到這幾個實體類都有幾個共同的屬性, 這時就會出現很多重復代碼.
這時我們可以選擇編寫一個父類,將這些共同屬性放到這個父類中, 並且在父類上加上@MappedSuperclass注解.
注意:
- 標注為@MappedSuperclass的類將不是一個完整的實體類,他將不會映射到數據庫表,但是他的屬性都將映射到其子類的數據庫字段中。
- 標注為@MappedSuperclass的類不能再標注@Entity或@Table注解,也無需實現序列化接口.
import lombok.Data; import javax.persistence.*; @Data @MappedSuperclass public abstract class BaseEntity { /** * 實體的id * 自增ID * @return */ @Id @GeneratedValue(strategy= GenerationType.IDENTITY) @Column(name = "id", unique = true, nullable = false) protected Long id; /** * 創建者 */ @Column(name = "create_by") protected Long createBy; /** * 創建時間 */ @Column(name = "create_time") private Date createTime; /** * 更新者 */ @Column(name = "update_by") protected Long updateBy; /** * 更新時間 */ @Column(name = "update_time") protected Date updateTime; }