Hibernate 系列教程14-继承-PerTable策略
Employee
public class Employee {
private Long id;
private String name;
HourlyEmployee
public class HourlyEmployee extends Employee {
private Double rate;
SalariedEmployee
public class SalariedEmployee extends Employee {
private Double salary;
Employee.hbm.xml
<class name="Employee" table="t_employee">
<id name="id">
<!-- 不能使用native的主键生成方式 -->
<generator class="org.hibernate.id.enhanced.TableGenerator" />
</id>
<property name="name" />
<!-- 在配置子类 -->
<union-subclass name="HourlyEmployee" table="t_HourlyEmployee">
<property name="rate" />
</union-subclass>
<union-subclass name="SalariedEmployee" table="t_SalariedEmployee">
<property name="salary" />
</union-subclass>
</class>
MainTest
public class MainTest {
Session session = null;
@Before
public void save() {
session = HibernateUtils.INSTANCE.getSession();
session.beginTransaction();
Employee employee = new Employee("jege");
HourlyEmployee hourlyEmployee = new HourlyEmployee();
hourlyEmployee.setName("hourly");
hourlyEmployee.setRate(200D);
SalariedEmployee salariedEmployee = new SalariedEmployee();
salariedEmployee.setName("salaried");
salariedEmployee.setSalary(300D);
session.save(employee);
session.save(hourlyEmployee);
session.save(salariedEmployee);
}
@Test
public void get() {
Employee employee = (Employee) session.get(Employee.class, 1L);
System.out.println(employee.getName());
HourlyEmployee hourlyEmployee = (HourlyEmployee) session.get(HourlyEmployee.class, 2L);
System.out.println(hourlyEmployee.getName());
System.out.println(hourlyEmployee.getRate());
SalariedEmployee salariedEmployee = (SalariedEmployee) session.get(SalariedEmployee.class, 3L);
System.out.println(salariedEmployee.getName());
System.out.println(salariedEmployee.getSalary());
}
@After
public void colse() {
session.getTransaction().commit();
session.close();
}
}
源码地址
https://github.com/je-ge/hibernate
如果觉得我的文章对您有帮助,请予以打赏。您的支持将鼓励我继续创作!谢谢!
Hibernate 系列教程14-继承-PerTable策略的更多相关文章
- Hibernate 系列教程12-继承-Join策略
Employee public class Employee { private Long id; private String name; HourlyEmployee public class H ...
- Hibernate 系列教程11-继承-Single Table策略
Single Table策略 通过 discriminator鉴别器来区分是父类还是子类 Employee public class Employee { private Long id; priva ...
- Hibernate 系列教程3-单表操作
工程截图 hibernate.cfg.xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Conf ...
- Hibernate 系列教程17-查询缓存
在二级缓存配置成功的基础上进行查询缓存配置 Product public class Product { private Long id; private String name; Product.h ...
- Hibernate 系列教程16-二级缓存
pom.xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate- ...
- Hibernate 系列教程15-一级缓存
Product public class Product { private Long id; private String name; Product.hbm.xml <class name= ...
- Hibernate 系列教程13-继承-鉴别器与内连接相结合
Employee public class Employee { private Long id; private String name; HourlyEmployee public class H ...
- Hibernate 系列教程10-组成关系
组成关系 在一个员工模型里面需要存入 员工公司所在地址的城市,街道 员工籍贯所在的城市,街道, 此时可以抽取城市,街道变成一个模型即是组成关系 Employee public class Employ ...
- Hibernate 系列教程9-自关联
自关联:本质还是原来双向一对多,原来要配置两个类,现在全部都配置在一个类里面 Employee public class Employee { private Long id; private Str ...
随机推荐
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)
推荐几款一键快速搭建PHP本地运行环境的好工具(含php7.0及apache,nigix,mysql) 首推phpstudy2016和wampServer3.0.6 理由支持php7.0 目前 ...
- 【转】别人家的孩子之《说说我的web前端之路,分享些前端的好书》
链接http://www.cnblogs.com/Darren_code/archive/2011/02/09/JavaScript.html 2011-10-31 22:56 by 聂微东 PS ...
- hdu_5618_Jam's problem again(cdq分治+lowbit)
题目链接:hdu_5618_Jam's problem again 题意: 给你n个点,每个点有一个坐标(x,y,z),找出有ans个点,3个坐标都比该点小,这个点的level就为ans,然后让你输出 ...
- DX shader根据顶点设置颜色
matrix ViewProjMatrix; vector Blue = {0.0f, 0.0f, 1.0f, 0.0f}; struct VS_INPUT { vector position : P ...
- jQuery执行进度提示窗口的实现(progressbar)
使用jQuery原生插件,先看效果: 主要是progressbar的更新进度以及“请稍等”后省略号.倒计时关闭的效果 如果执行单个任务的时间较长,会导致浏览器假死,一定要使用异步,代码结构要稍作调整. ...
- erlang调试技术之etop
etop是erlang进程信息查看工具,类似于UNIX的top. 一.配置参数 node The measured node. Value: atom() Mandatory setcookie Co ...
- bootstrap开始咯
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- [转载]Linux 环境下编译 0.11版本内核 kernel
最近在看<.如果Clobber/Modify 为空,则其前面的冒号(:)必须省略. 2.如果Output,Input,Clobber/Modify都为空,Output,Input之前的冒号(:) ...
- zencart 自定义函数
---------------------------------------------------------------------------------------------------- ...
- JS操作select标签
主要利用这个来实现省市区三级联动的 我利用的是ajax,每一次onchange事件都改变相对应的select中的option,数据全是ajax请求服务器查询数据库而来的,效果还可以,在本地测试的时候速 ...