简单实现JPA实体继承映射

来源:互联网 发布:睡不够是什么原因知乎 编辑:程序博客网 时间:2024/06/05 16:24

一个简单实现

父类加注解:@MappedSuperclass
 
@MappedSuperclasspublic class Traceability implements Serializable {    /**     * 创建时间     **/    private Date createDt;    /**     * 更新时间     **/    private Date updateDt;    /**     * 创建人员     **/    private String createBy;    /**     * 更新人员     **/    private String updateBy;    @Temporal(TemporalType.TIMESTAMP)    @Column(name = "create_dt")    public Date getCreateDt() {        return createDt;    }    public void setCreateDt(Date createDt) {        this.createDt = createDt;    }    @Temporal(TemporalType.TIMESTAMP)    @Column(name = "update_dt")    public Date getUpdateDt() {        return updateDt;    }    ……    /**     * 自动设置 createBy,updateBy,createDt,updateDt     * 标记对象可追溯信息,时间,操作人     *     * @param isCreate 是否为创建当前对象     */    public Traceability trace(boolean isCreate) {        String defaultOperator = "system";        Date now = new Date();        if (isCreate) {            if (StringUtils.isEmpty(this.createBy)) {                this.createBy = defaultOperator;            }            this.createDt = now;        } else {            this.createBy = null;            this.createDt = null;        }        if (StringUtils.isEmpty(this.updateBy)) {            this.updateBy = defaultOperator;        }        this.updateDt = now;        return this;    }}
子类直接继承父类即可
@Entity@Table(name = "om_member")public class Member extends Traceability{……
Traceability里面的属性就能加入到om_member表里面。

扩展

JPA实体支持继承映射。多态关联。多态查询。JPA的继承映射有例如以下几种情况:一、实体类继承抽象(详细)实体类二、实体类继承映射超类(Mapped Superclasses)--本文的实现方式三、实体类继承非实体类(这个非实体超类仅被作为一种继承行为,它的状态不会被持久化。)具体请参考:http://www.cnblogs.com/zfyouxi/p/4825495.html 欢迎关注橙子博客微信公众号:chengziboke888

查看原文:http://zccbbg.top/2017/05/16/1-3/
原创粉丝点击