说明地址: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. [分享] Code::Blocks Windows Console 中文亂碼解決

    相信各位大大們應該都有聽過Code::Blocks這個IDE,但網路上有許多人反應Code::Blocks不能編出中文的Console程式,但 Code::Blocks最新的版本預設使用UTF-8做為 ...

  2. COCOS2DX2.2.2 创建CCEditBox输入框架实现文本及密码输入

    本文转载于: http://5.quanpao.com/?p=561 使用CCEditBox需要启用扩展库既extension ,因此需要引入这个空间名 有两种方法, using namespace ...

  3. Careercup - Google面试题 - 4807591515389952

    2014-05-06 00:45 题目链接 原题: What would happen if you have only one server for a web cache (a web brows ...

  4. c++ 常用数据接口 set

    #include <set> #include <iostream> #include <string> int main(void) { std::set< ...

  5. UVA 12382 Grid of Lamps 贪心

    题目链接: C - Grid of Lamps Time Limit:1000MSMemory Limit: 0KB 问题描述 We have a grid of lamps. Some of the ...

  6. HDU 2121 Ice_cream’s world II 不定根最小树形图

    题目链接: 题目 Ice_cream's world II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

  7. 2012 Asia JinHua Regional Contest

    Draw Something http://acm.hdu.edu.cn/showproblem.php?pid=4450 o(n)统计输入每个数的平方和. #include<cstdio> ...

  8. poj 2362

    回溯加剪枝 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> # ...

  9. xargs 加 gm批量转换图片

    %x50% @ ../-\ 南澳西涌_50%/@ 看了很多说明上都在用-i,这是一个已经废弃了的参数

  10. java基础知识回顾之javaIO类--java序列化和反序列化

    /** *  * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...