一 :  SINGLE_TABLE继承策略

Animal.java

import java.io.Serializable;import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;/*** 单表继承A* */
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) // 指定为单表继承
@DiscriminatorColumn(name="animalType") // 标识字段定义
@DiscriminatorValue("A") // 该类的标识
public class Animal {@Id@GeneratedValueprivate int id;private String name;private String sex;
}

Bird.java

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;@Entity
@DiscriminatorValue("B")
public class Bird extends Animal{private int height;
}

Pig.java

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;@Entity
@DiscriminatorValue("P")
public class Pig extends Animal {private int weight;
}

最后的表结构

二 Join映射

Animal.java

import java.io.Serializable;import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;/*** Join映射* 父类,子类对应不同的表,子类中只存在其扩展的特殊属性(不包含父类的属性)* * */
@Entity
@Inheritance(strategy=InheritanceType.JOINED) // 指定为单表继承
public class Animal {@Id@GeneratedValueprivate int id;private String name;private String sex;
}

Bird.java

import javax.persistence.Entity;@Entity
public class Bird extends Animal {private int height;
}

最后的表结构

三 TABLE_PER_CLASS

Animal.java

import java.io.Serializable;import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;/*** TABLE_PER_CLASS策略:父类和子类对应不同的表,子类中存在所有的属性* (包含从父类继承下来的所有属性)* * */
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Animal {@Id
//  @GeneratedValue (使用TABLE_PER_CLASS时候,不能用GeneratedValue)private int id;private String name;private String sex;
}

Bird.java


import javax.persistence.Entity;@Entity
public class Bird extends Animal {private int height;
}

最后的表结构

(8) ebj学习: Jpa的SINGLE_TABLE,JOINED,TABLE_PER_CLASS三种继承策略相关推荐

  1. Spring 学习之 二----Spring创建对象的三种方式

    最近在系统的学习Spring,现在就Spring的一些知识进行总结. 我们知道Spring是一个开放源代码的设计层面的框架,他主要解决的是业务逻辑层与其他各层之间松耦合的问题. Spring 有三个核 ...

  2. mongo学习笔记四:Mongodb的三种集群(Replica Set)

    Replica Set    中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据 ...

  3. (9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询

    1 整体结构 client文件存放 ejb客户端的一些jar包 Animal.java 中配置命名查询 Person.java 中实现了方法监听和类监听两种监听方式( 在增删查改方法执行之前后之后调用 ...

  4. (7) ebj学习: jpa 一对一,一对多,多对多

    一  : 一对一 1 一对一主键关联 Customer.java import javax.persistence.Entity; import javax.persistence.Id; impor ...

  5. 【小白学习keras教程】十、三种Model Selection方法:k-fold cross-validation,GridSearchCV和RandomizedSearchCV

    @Author:Runsen Model Selection是划分训练集和测试集的手段,下面总结了三种Model Selection方法. k-fold cross-validation using ...

  6. Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式

    1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...

  7. 前端学习(1438):vue三种安装方式

    1. 直接下载源码然后通过路径引入- 开发版本:https://vuejs.org/js/vue.js- 生产版本:https://vuejs.org/js/vue.min.js2. CDN```js ...

  8. Java多线程学习七:线程池的 4 种拒绝策略和 6 种常见的线程池

    以便在必要的时候按照我们的策略来拒绝任务,那么拒绝任务的时机是什么呢?线程池会在以下两种情况下会拒绝新提交的任务. 第一种情况是当我们调用 shutdown 等方法关闭线程池后,即便此时可能线程池内部 ...

  9. 【Android进阶学习】设置透明效果的三种方法

    1.使用Android系统自带的透明效果资源 <android:backgroundandroid:background="@android:color/transparent&quo ...

最新文章

  1. Open3DGen:从RGB-D图像重建纹理3D模型的开源软件
  2. Visual Studio 2008 Samples Page
  3. linux-x86_64 error,ORA-09817/Linux-x86_64 Error: 28: No space left on device/ORA-01075
  4. pythonista脚本_IPA Installer脚本下载-Pythonista脚本IPA Installer(安装手机ipa文件) - 极光下载站...
  5. Client端异步Callback的应用与介绍
  6. 百度地图API常规应用十功能
  7. 幼儿园管理云平台众多,只有一家与众不同
  8. 对侯捷《Word 排版艺术》的期待
  9. bitbake的原理介绍, 使用方法, 编译脚本的编写方法
  10. 安卓学习 布局篇 Android studio
  11. TexturePacker纹理打包打方法及技巧
  12. catagory添加属性
  13. 智能时代怎么能少了老年人
  14. 【摸鱼神器】基于python的BOSS识别系统
  15. 埃森哲五年java待遇_【埃森哲工资】java开发工程师待遇-看准网
  16. 互联网巨头挺进银行的逻辑分析
  17. Oracle EBS 模拟登陆
  18. element 输入框点击事件_ElementUI的input事件问题
  19. Navicat设置表的外键
  20. ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

热门文章

  1. 一文了解JDK12 13 14 GC调优秘籍-附PDF下载
  2. python wordpress自定义字段获取_WordPress 自定义字段(Custom Fields)详细介绍和使用...
  3. Linux网络编程 之 无连接和有连接通信(二)
  4. 吴恩达机器学习 -- 多变量线性回归
  5. 洛谷--P1067 多项式输出
  6. 编译原理习题(含答案)——1 绪论——MOOC哈工大陈鄞配套, 1 编译是对()。 A. 机器语言的执行 B. 汇编语言的翻译
  7. 15行代码AC——习题3-1 得分 (UVa1585,Score)
  8. 未公开接口主要指以下哪几类_Java8的 Stream 函数式接口,你了解多少?
  9. nginx 获取body参数_分布式实战:Nginx缓存之流量分发层
  10. Shell Here Document 免交互命令和Expect