首页 > 其他分享 >简单实现JPA实体继承映射

简单实现JPA实体继承映射

时间:2023-06-11 19:01:03浏览次数:30  
标签:实体类 映射 JPA 实体 继承 createBy Date createDt public


一个简单实现

父类加注解:@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


标签:实体类,映射,JPA,实体,继承,createBy,Date,createDt,public
From: https://blog.51cto.com/u_16065421/6458610

相关文章

  • JPA中的ManyToOne和OneToMany
    概念说明一个用户可以有多个手机,一个手机只能被一个用户使用。这个就是多对一的关系,或者称之为一对多。用户是一,手机是多。外键设置在多这一方(如果不懂,可以百度一下)。具体设置的表如下:EMPLOYEE(table)EMP_IDFIRSTNAMELASTNAMESALARYMANAGER_ID1BobWay5000022SarahSmith75000null......
  • Navicat Premium将关系和实体添加到概念模型的方法
    NavicatPremium是一款强大的跨平台数据库管理工具,支持多种主流的关系型数据库系统,包括MySQL、MariaDB、SQLite、Oracle、PostgreSQL和MicrosoftSQLServer等。它提供了直观易用的用户界面和丰富的功能,使得数据库管理变得更加简单和高效。要添加关系,请单击工具栏中的新关系......
  • spring boot jar Initialized JPA EntityManagerFactory 失败【导致jar启动闪退】
    2023-06-1021:29:04.460WARN24060---[main]ConfigServletWebServerApplicationContext:Exceptionencounteredduringcontextinitialization-cancellingrefreshattempt:org.springframework.beans.factory.BeanCreationException:Errorcreating......
  • 用XmlSerializer.Deserialize将XML转实体遇到的问题
    1、命名空间的问题1.1XML示例:1.2反序列化代码:点击查看源代码```publicstaticobjectDeserializeFromXml<T>(stringxmlFilePath){objectresult=null;using(FileStreamfs=newFileStream(xmlFi......
  • Cache - 直接映射缓存
    参考https://zhuanlan.zhihu.com/p/1022934371.Cachelinecachesize:cache可以缓存最大数据的大小。将cache均分相等的块,每一块称为cacheline,现在的硬件设计中,一般cacheline的大小为4-128字节,cacheline做的太小会导致tag资源占用过大。cacheline是cache和主存......
  • 实体类中嵌套Enum类型并想转换成JSON字符串时遇到的问题。
    实体类中嵌套Enum类型并想转换成JSON字符串时遇到的问题。先说明问题的产生,在自己写着玩的时候,新建了一个User类如下:packagecom.ma.xdo;importlombok.*;importjava.io.Serializable;/***@ClassNameUser*@DescriptionTODO*@Author@O_o*@Date2023/6/814:......
  • 国企真的这么香吗?软件测试工程师国企真实体验:“每天过的像打仗一样!”
     还记得,之前一名在国企上班的程序员在匿名社区发了一个帖子,瞬间爆了。帖子中的这位程序员表示,他在的国企,税前工资25万,一周实际工作时间5个小时,一个一万行代码的项目,写了一年。平时上班,除了早晨做做样子看项目计划,一整天都在逛论坛搞副业等等…中午睡到两点下午五点半走人,没有k......
  • 静态资源映射
    静态资源映射概念:在web开发中,对静态资源映射是必不可少的,而所谓的静态资源映射,通俗来说,就是给项目导入图片,js,css等资源,同时可以进行访问。1.通过DefaultServlet处理静态资源在spring3.0.4以后的SpringMVC模块提供了静态资源映射器组件。通过mvc:resources标签配置静态资......
  • SparkUI中的Peak Pool Memory Direct / Mapped (直接缓冲池和映射缓冲池)
      PeakPoolMemoryDirect/Mapped --直接缓冲池和映射缓冲池峰值内存##什么是直接缓冲池和映射缓冲池?在Java中,有两种类型的缓冲池:直接缓冲池和映射缓冲池。直接缓冲池1)从堆外内存分配,不受JVM管理2)占用内存较多3)相比从JVM复制数据到本地,性能更高 映射缓冲池1)将文......
  • SpringBoot之Spring Data JPA入门学习
    JPA(JavaPersistenceAPI)Java持久化API,是Java持久化的标准规范,Hibernate是持久化规范的技术实现,而SpringDataJPA是在Hibernate基础上封装的一款框架。一、添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</a......