在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; }