@MappedSuperclass的用法

蓝咒 提交于 2020-02-08 01:24:23

大概从名字能看出来,直译就是映射父类,就是用来标识父类实体类

基于代码的可复用性,抽象化思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中
例如,数据库表中都需要id来表示主键,创建时间,创建者,等等这些映射实体类的通用的属性,交给jpa统一生成主键id编号,那么使用一个父类来封装这些通用属性,并用@MappedSuperclas标识
如下例子

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;

    /**
     * 创建者
     */
    @CreatedBy
    @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;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!