说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html

用来申明一个超类,继承这个类的子类映射时要映射此类中的字段,可以当做是对entity抽取封装的类。如果子类想重写此类的映射信息,可以使用 AttributeOverride and AssociationOverride annotations

  1. Example: Concrete class as a mapped superclass
  2. @MappedSuperclass
  3. public class Employee {
  4. @Id
  5. protected Integer empId;
  6. @Version
  7. protected Integer version;
  8. @ManyToOne @JoinColumn(name="ADDR")
  9. protected Address address;
  10. public Integer getEmpId() { ... }
  11. public void setEmpId(Integer id) { ... }
  12. public Address getAddress() { ... }
  13. public void setAddress(Address addr) { ... }
  14. }
  15. // Default table is FTEMPLOYEE table
  16. @Entity
  17. public class FTEmployee extends Employee {
  18. // Inherited empId field mapped to FTEMPLOYEE.EMPID
  19. // Inherited version field mapped to FTEMPLOYEE.VERSION
  20. // Inherited address field mapped to FTEMPLOYEE.ADDR fk
  21. // Defaults to FTEMPLOYEE.SALARY
  22. protected Integer salary;
  23. public FTEmployee() {}
  24. public Integer getSalary() { ... }
  25. public void setSalary(Integer salary) { ... }
  26. }
  27. @Entity @Table(name="PT_EMP")
  28. @AssociationOverride(name="address",
  29. joincolumns=@JoinColumn(name="ADDR_ID"))
  30. public class PartTimeEmployee extends Employee {
  31. // Inherited empId field mapped to PT_EMP.EMPID
  32. // Inherited version field mapped to PT_EMP.VERSION
  33. // address field mapping overridden to PT_EMP.ADDR_ID fk
  34. @Column(name="WAGE")
  35. protected Float hourlyWage;
  36. public PartTimeEmployee() {}
  37. public Float getHourlyWage() { ... }
  38. public void setHourlyWage(Float wage) { ... }
  39. }
  40. Example: Non-entity superclass
  41. public class Cart {
  42. // This state is transient
  43. Integer operationCount;
  44. public Cart() { operationCount = 0; }
  45. public Integer getOperationCount() { return operationCount; }
  46. public void incrementOperationCount() { operationCount++; }
  47. }
  48. @Entity
  49. public class ShoppingCart extends Cart {
  50. Collection items = new Vector();
  51. public ShoppingCart() { super(); }
  52. ...
  53. @OneToMany
  54. public Collection getItems() { return items; }
  55. public void addItem(Item item) {
  56. items.add(item);
  57. incrementOperationCount();
  58. }
  59. }
分享到:

JPA中的@MappedSuperclass的更多相关文章

  1. spring boot JPA中实体类常用注解

    spring boot jpa中的注解很多,参数也比较多.没必要全部记住,但是经常查看官方文档也比较麻烦,记录一下一些常用的注解.通过一些具体的例子来帮助记忆. @Entity @Table(name ...

  2. JPA学习---第九节:JPA中的一对多双向关联与级联操作

    一.一对多双向关联与级联操作 1.创建项目,配置文件代码如下: <?xml version="1.0" encoding="UTF-8"?> < ...

  3. 4、JPA table主键生成策略(在JPA中table策略是首推!!!)

    用 table 来生成主键详解 它是在不影响性能情况下,通用性最强的 JPA 主键生成器.这种方法生成主键的策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题. initialValue不起 ...

  4. Hibernate JPA 中配置Ehcache二级缓存

    在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错.具体过程如下: 1, 需要引入的jar包 http://ehcache.org/downloads/catalog 下载的包 ...

  5. 使用JPA中@Query 注解实现update 操作

    spring使用jpa进行update操作主要有两种方式: 1.调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.sav ...

  6. Jpa中设置OneToMany插入报异常解决办法

    在Jpa中如果设置@OneToMany,但使用的时候,如果没有赋值,会报异常出现,这时只需要实例化一个空数组即可, 但类型一定要对应: 实例如下: newField.setxxxxxList(new ...

  7. JPA中EntityListeners注解的使用

    使用场景 EntityListeners在jpa中使用,如果你是mybatis是不可以用的 它的意义 对实体属性变化的跟踪,它提供了保存前,保存后,更新前,更新后,删除前,删除后等状态,就像是拦截器一 ...

  8. Spring data JPA中使用Specifications动态构建查询

    有时我们在查询某个实体的时候,给定的条件是不固定的,这是我们就需要动态 构建相应的查询语句,在JPA2.0中我们可以通过Criteria接口查询,JPA criteria查询.相比JPQL,其优势是类 ...

  9. JPA中建立数据库表和实体间映射小结

    在JPA中,映射数据库表和实体的时候,需要注意一些细节如下, 实体类要用@Entity的注解: 要用 @Id 来注解一个主键: 如果跟数据库相关联,要用@Table注解相关数据库表: 实体类中字段需要 ...

随机推荐

  1. Very large tabs in eclipse panes on Ubuntu

    http://stackoverflow.com/questions/11805784/very-large-tabs-in-eclipse-panes-on-ubuntu ou can edit E ...

  2. 屌丝IT男

    偶尔翻到豆瓣里一篇对中国屌丝的批评,突然想到当年美国那个垮掉的一代,吸毒,淫乱,绝望的生存,而如今我们苦逼的80后自诩为屌丝的时候,也不想想每一个堕落的时代还是有牛逼的人存在,中国的大学,绝大部分在逃 ...

  3. EXT心得--并非所有的items配置对象都属于EXT的内置类

    之前我对EXT的items中未指明xtype的配置对象有一个错误的认识--即虽然某个items未指明它下面的某个组件的xtype,但这个组件肯定属性EXT的某个类.然而今天在查看actioncolum ...

  4. redis window环境下的安装地址

    https://github-cloud.s3.amazonaws.com/releases/3402186/25358446-c083-11e5-89cb-61582694855e.zip?X-Am ...

  5. java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

    因为这个问题折腾了以上午,终于解决了,做下记录: 错误提示为:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLSer ...

  6. 基于HOOK和MMF的Windows密码渗透技术

    随着计算机与网络的普及,信息安全越来越成为人们所普遍关心的大事.密码的渗透与反渗透在此领域表现的愈演愈烈.本文深入分析了各个版本Windows密码的特点,尤其是针对windws2K/XP安全性提高的情 ...

  7. struts2之请求参数接收

    struts2之请求参数接收 1. 采用基本类型接受请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性.请求路径:http:/ ...

  8. centos6.5\win7双系统安装配置

    一.安装所需软件 1.分区助手专业版PACNPro.exe(必需):用来对硬盘分区,将磁盘的一部分格式化成Linux可以识别的ext3格式 2.Ext2Fsd(硬盘安装必需,光盘安装不用):因为Win ...

  9. 【log4net】配置文件

    相关资料: http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html 注意: //如果为了使得应用程序的配置文件(web/app.con ...

  10. MonoBehaviour.StopCoroutine

    MonoBehaviour.StopCoroutine Description Stops all coroutines named methodName running on this behavi ...