BaseEntity实体的继承:@MappedSuperclass

本文介绍如何使用@MappedSuperclass实现实体类的基础属性共享,通过示例展示了如何创建一个基类(IdEntity),该基类包含通用属性(id, createDate, modifyDate)并被子实体类(User)继承。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在创建实体时,经常有重复的id和时间的属性要创建,所以想弄一个父类,然后所有实体继承,但是碰到了问题,就用到了@MappedSuperclass,它的的用法
用在实体的继承过程中的父类上;
如:
IdEntity.java

package com.zpf.test.Entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

/**
* 基础实体类
*
* @author zpf
*
*/
@MappedSuperclass
public class IdEntity implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@Column(updatable = false)
private Date createDate;
private Date modifyDate;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public Date getCreateDate() {
return createDate;
}

public void setCreateDate(Date createDate) {
this.createDate = createDate;
}

public Date getModifyDate() {
return modifyDate;
}

public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}

}




package com.zpf.test.Entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Table;

/**
* 用户实体
* @author zpf
*
*/
@Entity
@Table(name="tb_user")
public class User extends IdEntity implements Serializable{

private static final long serialVersionUID = 1L;

private String name;

private String sex;

private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}


}



这样就会生成tb_user表而且包含父类属性,否则只会生成一张identity表,字段有:id,crearedate,modifydate,name,sex,age
根据以下实体示例,参考其中的注解个注释,帮我在PDManer 创建一个 通用的 可以创建java实体的模版,根据模版可以直接生成程序代码, 以下是项目中的其他实体 /** * Help实体 * @author 自动生成 * @version V1.0.0 2025/06/09 * @since V100R001 */ @MappedSuperclass @ApiModel(description="Help") @Data @EntityListeners(AuditingEntityListener.class) public class Help implements BaseEntity,Serializable { private static final long serialVersionUID = 1L; public Help() { this.orgId = StringUtil.isNotNull(PrincipalContextUser.getPrincipal()) ? PrincipalContextUser.getPrincipal().getOrgId() : ""; this.domainId = StringUtil.isNotNull(PrincipalContextUser.getPrincipal()) ? PrincipalContextUser.getPrincipal().getOrgId() : ""; } /** * 主键id */ @Id @Column(length = 50) private String id = UUIDHelper.NewID(); /** * 名称 */ @Column(length=50) @ApiModelProperty("名称") @NotBlank(message = "分析项目名称{validation.message.blank}") @Length(message = "分析项目名称{validation.message.length}", max = 50) private String analyzeItemName; /** * 分析因子编号 */ @Column(length=50) @ApiModelProperty("分析因子编号") @Length(message = "分析项目编号{validation.message.length}", max = 50) private String analyzeItemCode; /** * 变量名称(预留,前台改为别名) */ @Column(length=50) @ApiModelProperty("变量名称(预留,前台改为别名)") @Length(message = "分析项目别名{validation.message.length}", max = 50) private String variableName; /** * 统计别名 */ @ApiModelProperty("统计别名") @Length(message = "统计别名{validation.message.length}", max = 255) private String statisticalAlias; /** * 拼音缩写 */ @Column(length=50) @ApiModelProperty("拼音缩写") private String pinYin; /** * 全拼 */ @Column(length=100) @ApiModelProperty("全拼") private String fullPinYin; /** * CAS号 */ @Column(length=50) @ApiModelProperty("CAS号") @Length(message = "CAS号{validation.message.length}", max = 50) private String casNum; /** * 是否删除 */ @Column(nullable=false) @ColumnDefault("0") @ApiModelProperty("是否删除") private Boolean isDeleted=false; /** * 排序值 */ @Column(nullable=false) @ColumnDefault("0") @ApiModelProperty("排序值") private Integer orderNum; /** * 组织机构id */ @Column(length=50,nullable=false) @ColumnDefault("'00000000-0000-0000-0000-000000000000'") @ApiModelProperty("组织机构id") private String orgId; /** * 创建人 */ @Column(length=50,nullable=false) @ColumnDefault("'00000000-0000-0000-0000-000000000000'") @CreatedBy @ApiModelProperty("创建人") private String creator; /** * 创建时间 */ @Column(nullable=false) @ColumnDefault("getdate") @CreatedDate @ApiModelProperty("创建时间") private Date createDate; /** * 所属实验室 */ @Column(length=50,nullable=false) @ColumnDefault("'00000000-0000-0000-0000-000000000000'") @ApiModelProperty("所属实验室") private String domainId; /** * 修改人 */ @Column(length=50,nullable=false) @ColumnDefault("'00000000-0000-0000-0000-000000000000'") @LastModifiedBy @ApiModelProperty("修改人") private String modifier; /** * 修改时间 */ @Column(nullable=false) @ColumnDefault("getdate") @LastModifiedDate @ApiModelProperty("修改时间") private Date modifyDate; }
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值