BaseEntity实体的继承:@MappedSuperclass

阅读更多

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

用在实体的继承过程中的父类上;

如:

IdEntity.java

Java代码  

  1. package com.zpf.test.Entity;
  2. import java.io.Serializable;
  3. import java.util.Date;
  4. import javax.persistence.Column;
  5. import javax.persistence.GeneratedValue;
  6. import javax.persistence.GenerationType;
  7. import javax.persistence.Id;
  8. import javax.persistence.MappedSuperclass;
  9. /**
  10. * 基础实体类
  11. *
  12. * @author zpf
  13. *
  14. */
  15. @MappedSuperclass
  16. public class IdEntity implements Serializable {
  17. /**
  18. *
  19. */
  20. private static final long serialVersionUID = 1L;
  21. @Id
  22. @GeneratedValue(strategy = GenerationType.AUTO)
  23. private long id;
  24. @Column(updatable = false)
  25. private Date createDate;
  26. private Date modifyDate;
  27. public long getId() {
  28. return id;
  29. }
  30. public void setId(long id) {
  31. this.id = id;
  32. }
  33. public Date getCreateDate() {
  34. return createDate;
  35. }
  36. public void setCreateDate(Date createDate) {
  37. this.createDate = createDate;
  38. }
  39. public Date getModifyDate() {
  40. return modifyDate;
  41. }
  42. public void setModifyDate(Date modifyDate) {
  43. this.modifyDate = modifyDate;
  44. }
  45. }
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;
    }

}

Java代码  

  1. package com.zpf.test.Entity;
  2. import java.io.Serializable;
  3. import javax.persistence.Entity;
  4. import javax.persistence.Table;
  5. /**
  6. * 用户实体
  7. * @author zpf
  8. *
  9. */
  10. @Entity
  11. @Table(name="tb_user")
  12. public class User extends IdEntity implements Serializable{
  13. private static final long serialVersionUID = 1L;
  14. private String name;
  15. private String sex;
  16. private int age;
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. public String getSex() {
  24. return sex;
  25. }
  26. public void setSex(String sex) {
  27. this.sex = sex;
  28. }
  29. public int getAge() {
  30. return age;
  31. }
  32. public void setAge(int age) {
  33. this.age = age;
  34. }
  35. }
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
原文地址:https://www.iteye.com/blog/peng13123-2062980

原文地址:https://www.cnblogs.com/jpfss/p/12083639.html

时间: 2024-08-09 11:16:54

BaseEntity实体的继承:@MappedSuperclass的相关文章

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

在我们开发一个项目的时候,同城定义实体的时候,都会进行一些抽象,也就是面向对象的一些思想.1比如无论是数据实体还是其他类型的实体都会有id字段2.对于数据实体一般都会有创建人,创建时间,更新人,更新时间,备注等等. 这个时候我们想的肯定是将这些公共的抽象到公共的vo中去,然后具体的不同vo再继承这些公共的vo. 在JPA中因为每一个实体对应的是一个表,这时候就有可能出现虽然继承了,但是并不能扫描到那些在公共实体中的字段,这时候我们可以使用注解@MappedSuperclass,这个注解的作用就是

修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

折腾几天记载一下,由于项目实际需要,从edmx生成的实体类能自动继承自定义的基类,这个基类不是从edmx文件中添加的Entityobject. 利用ADO.NET C# POCO Entity Generator With WCF Support生成的tt文件(比如model.tt)中找到 partial class partial class 修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

EF中多表公共字段,以及设置EntityBase使所有实体类继承自定义类

使用EF框架访问数据库时,如果某些表具有公共字段,例如在审核流程中,对于各类申请单资料的创建人.创建时间.修改人.修改时间,这些可能多表都需要的字段,如果在每个实体中进行赋值操作显然是类似和重复的,下面是一个统一在数据提交时进行赋值的例子(经简化,如果只是为记录时间并不用这么做),记录如下: 1. 创建一个公用接口IAudited,包含公用字段,申请单实体类继承这个接口. 2. 定义一个抽象类DbEntity(用dbml文件的EntityBase属性,使数据库实体类都继承自此类),定义OnSav

spring-data-jpa实体类继承抽象类如何映射父类的属性到数据库

在抽象父类上加上注解@MappedSuperclass @MappedSuperclass public class Pet { private Integer id;//id private String name;//名字 private String variety;//品种 private double weight;//体重 private Integer age;//年龄 private char vaccine;//是否注射疫苗 y:已注射 n:未注射 d:未知 private I

Hibernate实体对象继承策略

Hibernate继承策略总共同拥有三种,一种是共用一张表:一种是每一个类一张表,表里面储存子类的信息和父类的信息:另一种是通过表连接的方式.每一个类都有一张表,可是子类相应的表仅仅保存自己的信息,父类相应的表保存父类的信息.它们之间通过子类表和父类表的关联来获取全部的信息. 第一种方式,即共用一张表: Java代码 @Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="dis

JPA实体继承的映射

注:文章中据说的实体指的是被@Entity注解的类. JPA中对象关系映射通常情况下是一个实体对应一个表,两个实体之间没有任何关系.如果两个实体之间是继承关系,那么该如何映射呢? JPA中的实体支持继承映射,多态关联,多态查询.抽象类和具体的类都可以是实体,且都可以使用@Entity来注解,映射成实体,并查询封装成一个实体.实体类可以继承非实体类,非实体类也可以继承实体类. JPA的继承映射有如下几种情况: 一.实体类继承抽象(具体)实体类 抽象类可以指定成为一个实体,抽象实体和具体实体的唯一区

Hibernate之jpa实体映射的三种继承关系

在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承策略 单表继承策略,父类实体和子类实体共用一张数据库表,在表中通过一列辨别字段来区别不同类别的实体.具体做法如下: a.在父类实体的@Entity注解下添加如下的注解: @Inheritance(Strategy=InheritanceType.SINGLE_TABLE)@Discriminator

一个实体类基类实现

为了观察变量方便,我们通常会重写实体类模型的toString方法,可是每一个类都写.有些冗余. 事实上,能够这样子: package others; import java.io.Serializable; import java.lang.reflect.Field; import org.apache.commons.lang3.builder.ToStringBuilder; /** * 重写toString()的实体类基类 * @author limenghua * */ public

@MappedSuperclass注解的使用说明

转载自:http://blog.sina.com.cn/s/blog_7085382f0100uk4p.html 基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中. 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang.annotation.ElementType.TYPE}) 2.标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据