说明地址: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. DRLSE 水平集算法总结

    背景: Level Set方法是美国数学家Osher(加州大学洛杉矶分校)和Sethian(加州大学伯克利分校)合作提出的.后者因为对Level Set的贡献获得了去年美国数学会与工业应用数学会联合颁 ...

  2. Careercup - Facebook面试题 - 6026101998485504

    2014-05-02 10:47 题目链接 原题: Given an unordered array of positive integers, create an algorithm that ma ...

  3. sqlserver 2008 卸载时提示 “重新启动计算机”失败

    问题:sqlserver 2008 卸载时提示 “重新启动计算机”失败 解决办法: 1.打开注册表:开始->运行: regedit 2.找到HKEY_LOCAL_MACHINE\SYSTEM\C ...

  4. EXT经验--查询EditorGridPanel的tbar的默认配置对象

    前言:EXT的API可谓熟悉EXT的葵花宝典,会看API可谓对于配置EXT,学习EXT最重要的基本功,这点相对于学习轻量级的Easyui来说更加明显. 比如下面的一段代码:注:在Ext.grid.Ed ...

  5. Windows Server 2008下共享资源访问走捷径 (不用用户名 和 密码 访问共享)

    1. 启用来宾帐号2. 共享目录添加“Guest”帐号3. “gpedit.msc”,打开对应系统的组策略编辑窗口;在该编辑窗口的左侧显示区域,依次展开“本地计算机策略”/“计算机配置”/“Windo ...

  6. Mac和iOS开发资源汇总

    小引 本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏(在浏览器中按command+D). 今天(2013年7月19日)收录了许多中文网站和博客.大家一定要去感受一下哦. 如果大 ...

  7. 《head first java 》读书笔记(五)

    Updated 2014/04/09 P581--P615 如何组织.包装与部署Java程序. 部署的选择 本机: Executable Jar 两者之间的结合: Web Start, RMI app ...

  8. tomcat 解析(三)-启动框架

    TOMCAT源码分析(启动框架)前言:   本文是我阅读了TOMCAT源码后的一些心得. 主要是讲解TOMCAT的系统框架, 以及启动流程.若有错漏之处,敬请批评指教!建议:   毕竟TOMCAT的框 ...

  9. C#中Hashtable容器的了解与使用

    初涉Hashtable寄语 由于近段时间培训内容涉及到Hashtable方面的知识,由于培训仅仅起到一个引导的作用,加之以前又接触得少,因此对Hashtable这个东东蛮陌生,呵呵,今晚木有事儿就一起 ...

  10. java使用正则表达式——实例

    Java代码   import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author        Der *  ...