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注解就可以了,只是這些公共的字段不需要了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM