前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hibernate 中继承映射之三 每一个类一个表

Hibernate 中继承映射之三 每一个类一个表

作者头像
Hongten
发布2018-09-18 09:58:34
3680
发布2018-09-18 09:58:34
举报
文章被收录于专栏:HongtenHongten

在数据库中建立表:

mail:id,redipient,phone,address,postcode             <id><pk>

post_mail:id,parcel_number                                  <id><pk,fk(mail)>

express_mail:id,express_number,express_company  <id><pk,fk(mail)>

新建java project项目:chapter14_pertable

Add  Hibernate Capabilities

手工编写  Delivery.java         PostDelivery.java            ExperssDelivey.java

Delivery.java

代码:

/**  *  */ package com.b510.examples;

/**  *  * @author XHW  *  * @date 2011-7-9  *  */ public class Delivery {

 private Integer id;  private String recipient;  private String phone;  private String address;  private String postcode;  /**   * @return the id   */  public Integer getId() {   return id;  }  /**   * @param id the id to set   */  public void setId(Integer id) {   this.id = id;  }  /**   * @return the recipient   */  public String getRecipient() {   return recipient;  }  /**   * @param recipient the recipient to set   */  public void setRecipient(String recipient) {   this.recipient = recipient;  }  /**   * @return the phone   */  public String getPhone() {   return phone;  }  /**   * @param phone the phone to set   */  public void setPhone(String phone) {   this.phone = phone;  }  /**   * @return the address   */  public String getAddress() {   return address;  }  /**   * @param address the address to set   */  public void setAddress(String address) {   this.address = address;  }  /**   * @return the postcode   */  public String getPostcode() {   return postcode;  }  /**   * @param postcode the postcode to set   */  public void setPostcode(String postcode) {   this.postcode = postcode;  } }

PostDelivery.java

代码:

/**  *  */ package com.b510.examples;

/**  *  * @author XHW  *  * @date 2011-7-9  *  */ public class PostDelivery extends Delivery{

 private String parcelNumber;

 /**   * @return the parcelNumber   */  public String getparcelNumber() {   return parcelNumber;  }

 /**   * @param parcelNumber the parcelNumber to set   */  public void setparcelNumber(String parcelNumber) {   this.parcelNumber = parcelNumber;  }  }

ExpressDelivery.java

代码;

/**  *  */ package com.b510.examples;

/**  *  * @author XHW  *  * @date 2011-7-9  *  */ public class ExpressDelivery extends Delivery {

 private String expressNumber;  private String expressCompany;  /**   * @return the expressNumber   */  public String getExpressNumber() {   return expressNumber;  }  /**   * @param expressNumber the expressNumber to set   */  public void setExpressNumber(String expressNumber) {   this.expressNumber = expressNumber;  }  /**   * @return the expressCompany   */  public String getExpressCompany() {   return expressCompany;  }  /**   * @param expressCompany the expressCompany to set   */  public void setExpressCompany(String expressCompany) {   this.expressCompany = expressCompany;  } }

Delivery.hbm.xml

代码:

<?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>     <class name="com.b510.examples.Delivery" table="mail" catalog="users">         <id name="id" type="java.lang.Integer">             <column name="id" />             <generator class="increment" />         </id>         <property name="recipient" type="java.lang.String">             <column name="recipient" length="200" />         </property>         <property name="phone" type="java.lang.String">             <column name="phone" length="200" />         </property>         <property name="address" type="java.lang.String">             <column name="address" length="400" />         </property>         <property name="postcode" type="java.lang.String">             <column name="postcode" length="10" />         </property>

<joined-subclass name="com.b510.examples.PostDelivery" table="post_mail">         <key column="id" foreign-key="id"></key>         <property name="parcelNumber" type="java.lang.String">             <column name="parcel_number" length="30" />         </property>         </joined-subclass> <joined-subclass name="com.b510.examples.ExpressDelivery" table="express_mail">         <key column="id" foreign-key="id"></key>         <property name="expressCompany" type="java.lang.String">             <column name="express_company" length="40" />         </property>         <property name="expressNumber" type="java.lang.String">             <column name="express_number" length="40" />         </property>         </joined-subclass>     </class> </hibernate-mapping>

测试代码:

HibernateTest.java

代码:

/**  *  */ package com.b510.examples;

import java.util.List;

import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction;

/**  *  * @author XHW  *  * @date 2011-7-9  *  */ public class HibernateTest {

 /**   * @param args   */  public static void main(String[] args) {   HibernateTest test=new HibernateTest();   //test.insertDelivery();   test.listPostDelivery();   test.listExpressDelivery();  }

 public void insertDelivery() {   Session session = HibernateSessionFactoryUtil.getSessionFactory()     .openSession();   Transaction tx = session.beginTransaction();

  PostDelivery post = new PostDelivery();   post.setRecipient("Hongten");   post.setAddress("广州大学");   post.setPhone("115");   post.setPostcode("510006");   post.setparcelNumber("订单号:ACD123SDJF23");

  ExpressDelivery express = new ExpressDelivery();   express.setRecipient("HongWei");   express.setAddress("四川成都");   express.setPhone("123465");   express.setPostcode("456789");   express.setExpressNumber("订单号:423SDFSJDKLF");   express.setExpressCompany("顺丰快递公司");   try {    session.save(post);    session.save(express);   } catch (Exception e) {    e.printStackTrace();    if (tx.isActive()) {     tx.rollback();    }   }   session.getTransaction().commit();  }  public void listPostDelivery(){   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from PostDelivery");   List<PostDelivery> list=query.list();   session.getTransaction().commit();   for(PostDelivery post:list){    System.out.println(post.getId());    System.out.println(post.getAddress());    System.out.println(post.getRecipient());    System.out.println(post.getparcelNumber());   }  }  public void listExpressDelivery(){   Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();   session.beginTransaction();   Query query=session.createQuery("from ExpressDelivery");   List<ExpressDelivery> list=query.list();   session.getTransaction().commit();   for(ExpressDelivery express:list){    System.out.println(express.getId());    System.out.println(express.getAddress());    System.out.println(express.getRecipient());    System.out.println(express.getExpressCompany());    System.out.println(express.getExpressNumber());   }  } }

运行效果:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Hibernate:     select         postdelive0_.id as id0_,         postdelive0_1_.recipient as recipient0_,         postdelive0_1_.phone as phone0_,         postdelive0_1_.address as address0_,         postdelive0_1_.postcode as postcode0_,         postdelive0_.parcel_number as parcel2_1_     from         post_mail postdelive0_     inner join         users.mail postdelive0_1_             on postdelive0_.id=postdelive0_1_.id 1 广州大学 Hongten 订单号:ACD123SDJF23 Hibernate:     select         expressdel0_.id as id0_,         expressdel0_1_.recipient as recipient0_,         expressdel0_1_.phone as phone0_,         expressdel0_1_.address as address0_,         expressdel0_1_.postcode as postcode0_,         expressdel0_.express_company as express2_2_,         expressdel0_.express_number as express3_2_     from         express_mail expressdel0_     inner join         users.mail expressdel0_1_             on expressdel0_.id=expressdel0_1_.id 2 四川成都 HongWei 顺丰快递公司 订单号:423SDFSJDKLF

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-07-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档