zoukankan      html  css  js  c++  java
  • Jpa实体VO使用继承的实体的做法@MappedSuperclass注解的使用

       在我们开发一个项目的时候,同城定义实体的时候,都会进行一些抽象,也就是面向对象的一些思想.1比如无论是数据实体还是其他类型的实体都会有id字段2.对于数据实体一般都会有创建人,创建时间,更新人,更新时间,备注等等。

      这个时候我们想的肯定是将这些公共的抽象到公共的vo中去,然后具体的不同vo再继承这些公共的vo。

      在JPA中因为每一个实体对应的是一个表,这时候就有可能出现虽然继承了,但是并不能扫描到那些在公共实体中的字段,这时候我们可以使用注解@MappedSuperclass,这个注解的作用就是将这个实体作为基类实体,继承它的实体被扫描的时候会自动扫描公共的这些字段。

    BaseEntity:

    package uap.web.persistence;
    
    import java.io.Serializable;
    
    import javax.persistence.Id;
    import javax.persistence.MappedSuperclass;
    
    /**
     * 
     * 
     *  @author Hotusm
     *  @since 2016-03-18
     *  实体支持类
     */
    @MappedSuperclass
    public class BaseEntity implements Serializable{
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        @Id
        protected String id;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
        
    }

    DataEntity:

    package uap.web.persistence;
    
    import java.io.Serializable;
    import java.sql.Date;
    
    import javax.persistence.Id;
    import javax.persistence.MappedSuperclass;
    
    import com.fasterxml.jackson.annotation.JsonFormat;
    
    /**
     * 
     * 
     * @author Hotusm
     * @since 2016-03-18
     * 因为创建人和更新人的关联关系比较复杂,所以在其中中没有定义
     */
    @MappedSuperclass
    public class DataEntity extends BaseEntity{
        /**
         * 
         */
        private static final long serialVersionUID = -3203004068002303110L;
        
        @Id
        protected String id;
        /**
         * 创建时间
         */
        @JsonFormat
        protected Date createDate;
        /**
         * 更新时间
         */
        @JsonFormat
        protected Date updateDate;
        
        /**
         * 备注
         */
        protected String remark;
    
        public Date getCreateDate() {
            return createDate;
        }
    
        public void setCreateDate(Date createDate) {
            this.createDate = createDate;
        }
    
        public Date getUpdateDate() {
            return updateDate;
        }
    
        public void setUpdateDate(Date updateDate) {
            this.updateDate = updateDate;
        }
    
        public String getRemark() {
            return remark;
        }
    
        public void setRemark(String remark) {
            this.remark = remark;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
        
        
    }

    然后我们在我们具体的VO中使用JPA注解就可以了,只是这些公共的字段不需要了。

  • 相关阅读:
    学习中的坑
    友链
    CF1131E String Multiplication 题解
    CF438E The Child and Binary Tree 题解
    [WC2005]友好的生物题解
    [IOI2016]shortcut 题解
    CF911F [Tree Destruction] 题解
    状压dp技巧之轮廓线 hdu1400/poj2411acwing291 蒙德里安的梦想
    TG-WC2021 笔记
    拯救世界2题解
  • 原文地址:https://www.cnblogs.com/zr520/p/5294094.html
Copyright © 2011-2022 走看看