(8) ebj学习: Jpa的SINGLE_TABLE,JOINED,TABLE_PER_CLASS三种继承策略
一 : 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三种继承策略相关推荐
- Spring 学习之 二----Spring创建对象的三种方式
最近在系统的学习Spring,现在就Spring的一些知识进行总结. 我们知道Spring是一个开放源代码的设计层面的框架,他主要解决的是业务逻辑层与其他各层之间松耦合的问题. Spring 有三个核 ...
- mongo学习笔记四:Mongodb的三种集群(Replica Set)
Replica Set 中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据 ...
- (9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询
1 整体结构 client文件存放 ejb客户端的一些jar包 Animal.java 中配置命名查询 Person.java 中实现了方法监听和类监听两种监听方式( 在增删查改方法执行之前后之后调用 ...
- (7) ebj学习: jpa 一对一,一对多,多对多
一 : 一对一 1 一对一主键关联 Customer.java import javax.persistence.Entity; import javax.persistence.Id; impor ...
- 【小白学习keras教程】十、三种Model Selection方法:k-fold cross-validation,GridSearchCV和RandomizedSearchCV
@Author:Runsen Model Selection是划分训练集和测试集的手段,下面总结了三种Model Selection方法. k-fold cross-validation using ...
- Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式
1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...
- 前端学习(1438):vue三种安装方式
1. 直接下载源码然后通过路径引入- 开发版本:https://vuejs.org/js/vue.js- 生产版本:https://vuejs.org/js/vue.min.js2. CDN```js ...
- Java多线程学习七:线程池的 4 种拒绝策略和 6 种常见的线程池
以便在必要的时候按照我们的策略来拒绝任务,那么拒绝任务的时机是什么呢?线程池会在以下两种情况下会拒绝新提交的任务. 第一种情况是当我们调用 shutdown 等方法关闭线程池后,即便此时可能线程池内部 ...
- 【Android进阶学习】设置透明效果的三种方法
1.使用Android系统自带的透明效果资源 <android:backgroundandroid:background="@android:color/transparent&quo ...
最新文章
- Open3DGen:从RGB-D图像重建纹理3D模型的开源软件
- Visual Studio 2008 Samples Page
- linux-x86_64 error,ORA-09817/Linux-x86_64 Error: 28: No space left on device/ORA-01075
- pythonista脚本_IPA Installer脚本下载-Pythonista脚本IPA Installer(安装手机ipa文件) - 极光下载站...
- Client端异步Callback的应用与介绍
- 百度地图API常规应用十功能
- 幼儿园管理云平台众多,只有一家与众不同
- 对侯捷《Word 排版艺术》的期待
- bitbake的原理介绍, 使用方法, 编译脚本的编写方法
- 安卓学习 布局篇 Android studio
- TexturePacker纹理打包打方法及技巧
- catagory添加属性
- 智能时代怎么能少了老年人
- 【摸鱼神器】基于python的BOSS识别系统
- 埃森哲五年java待遇_【埃森哲工资】java开发工程师待遇-看准网
- 互联网巨头挺进银行的逻辑分析
- Oracle EBS 模拟登陆
- element 输入框点击事件_ElementUI的input事件问题
- Navicat设置表的外键
- ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
热门文章
- 一文了解JDK12 13 14 GC调优秘籍-附PDF下载
- python wordpress自定义字段获取_WordPress 自定义字段(Custom Fields)详细介绍和使用...
- Linux网络编程 之 无连接和有连接通信(二)
- 吴恩达机器学习 -- 多变量线性回归
- 洛谷--P1067 多项式输出
- 编译原理习题(含答案)——1 绪论——MOOC哈工大陈鄞配套, 1 编译是对()。 A. 机器语言的执行 B. 汇编语言的翻译
- 15行代码AC——习题3-1 得分 (UVa1585,Score)
- 未公开接口主要指以下哪几类_Java8的 Stream 函数式接口,你了解多少?
- nginx 获取body参数_分布式实战:Nginx缓存之流量分发层
- Shell Here Document 免交互命令和Expect