当前位置: 代码迷 >> Java相关 >> Jpa实业VO使用继承的实体的做法@MappedSuperclass注解的使用
  详细解决方案

Jpa实业VO使用继承的实体的做法@MappedSuperclass注解的使用

热度:19   发布时间:2016-04-22 19:14:37.0
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 *  实体支持类 */@MappedSuperclasspublic 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 * 因为创建人和更新人的关联关系比较复杂,所以在其中中没有定义 */@MappedSuperclasspublic 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注解就可以了,只是这些公共的字段不需要了。

  相关解决方案