说明地址: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. c语言关于二进制的输出

    c语言中的二进制输出是没有占位符的,不像八进制:%o: 和十六进制:x%: c中二进制的输出 //右移31位,从最高为开始和1做&运算,得到每一位的二进制数值 void printbinry( ...

  2. iOS 下拉菜单 FFDropDownMenu自定义下拉菜单样式实战-b

    Demo地址:https://github.com/chenfanfang/CollectionsOfExampleFFDropDownMenu框架地址:https://github.com/chen ...

  3. 小王子浅读Effective javascript(一)了解javascript版本

    哈哈,各位园友新年快乐!愚安好久没在园子里写东西了,这次决定针对javascript做一个系列,叫做<小王子浅读Effective javascript>,主要是按照David Herma ...

  4. ListView防止滑动变色的小技巧

    listview滑动时会变成白色,如果背景色不是白色的话可以通过设置setCacheColorHint(Color.TRANSPARENT);来避免变色,.对应的xml也可以进行设置.

  5. 在eclipse里的 flex 没有可视化的编辑

      注:在4.7版本里去掉了可视化编辑器.   转自:http://3470973.blog.51cto.com/3460973/1135328 最近eclipse切换了一个工作空间,创建的flex项 ...

  6. IntelliJ IDEA 15 显示工具栏及底部周边工具栏

  7. 【CodeForces】【148D】Bag of mice

    概率DP kuangbin总结中的第9题 啊……题目给的数据只有白鼠和黑鼠的数量,所以我们只能在这个上面做(gao)文(D)章(P)了…… 明显可以用两种老鼠的数量来作为状态= = 我的WA做法: 令 ...

  8. NC保存报dirty解决方法

    在NC UI端测试保存的时候报  " The data whose initcode is 6033 is dirty! " 错误,其解决方式是 在IHrPf接口中添加你的单据模板编号 和 参数模板 ...

  9. [设计模式] 21 策略模式 Strategy

    在GOF的<设计模式:可复用面向对象软件的基础>一书中对策略模式是这样说的:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.该模式使得算法可独立于使用它的客户而变化. 策略模 ...

  10. Linux下配置安装PHP环境

    参考别人的做法,遇到问题上网查,下面就是安装步骤. 一.安装Apache2.2.221.到官网下载  http://httpd.apache.org/download.cgi    2.解压    t ...