一个简单实现
父类加注解:@MappedSuperclass
@MappedSuperclass
public 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)–本文的实现方式
三、实体类继承非实体类(这个非实体超类仅被作为一种继承行为,它的状态不会被持久化。)
欢迎关注橙子博客微信公众号:chengziboke888
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
MetaQ(全称Metamorphosis)是一个高性能、高可用、可扩展的分布式消息中间件,,MetaQ具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,METAQ在阿里巴巴各个子公司被广泛应用,每天转…