hibernate 继承映射 joined-subclass

               

package subclass.map;/** * 普通员工 * @author wangtao * */public class Staff { private int id; private String name;    public int getId() {  return id; } public void setId(int id) {  this.id = id; } public String getName() {  return name; } public void setName(String name) {  this.name = name; }}

 

package subclass.map;/** * 正式工 * @author wangtao * */public class FormalStaff extends Staff { // 正式员工有 工号 private String staffId;  public String getStaffId() {  return staffId; } public void setStaffId(String staffId) {  this.staffId = staffId; } }

 

package subclass.map;/** * 临时工有 * @author wangtao * */public class TempStaff extends Staff { // 临时工 - 工时 private int hours; public int getHours() {  return hours; } public void setHours(int hours) {  this.hours = hours; }}

 

 

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="subclass.map">    <class name="Staff" table="T_subclass_staff">        <id name="id">            <generator class="native" />        </id>       <property name="name" type="string" length="20"></property>              <joined-subclass name="FormalStaff" table="T_subclass_staff_Formal">        <key column="formal_id"></key>        <property name="staffId" type="string" length="20"></property>       </joined-subclass>               //key 定义的列既是主键 又是外键       <joined-subclass name="TempStaff" table="T_subclass_staff_Temp">        <key column="temp_id"></key>        <property name="hours"></property>       </joined-subclass>           </class>    </hibernate-mapping>

生成三张数据表

 

staff : id name

formal: formal_id staffId

temp: temp_id   hours

 

 

package subclass.map.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import subclass.map.FormalStaff;import subclass.map.Staff;import subclass.map.TempStaff;/** * 双向一对多  * 增删改查测试 * @author wangtao * */public class Test {  static Session session; static{  SessionFactory fac = new Configuration().configure().buildSessionFactory();    session  = fac.openSession(); } public static void main(String[] args) {  insert(); }  public static void insert(){  Staff staff = new Staff();  staff.setName("tao");   FormalStaff formal = new FormalStaff();  formal.setStaffId("idxxxx");    TempStaff temp = new TempStaff();  temp.setHours(20);    Transaction tx = session.beginTransaction();  tx.begin();    session.save(staff);  session.save(formal);  session.save(temp);    tx.commit();    System.out.println("插入完成.....");   } }

 

 

插入完成后, 

 

staff 中的 记录为

1   tao

2   null

3  null

 

formal 中的记录为

 

2  idxxxxx

 

temp 中的记录为

3  20

           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值