"1.0"?>
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
package
="com.randy.bean2">
  <class name="Item" table="t_Item">
    
    "id"
>
    class="native"/>
    
    "name" />
    "Book" table="t_book">
      "sid" />
      "page" />
    

    
    "Dvd" table="t_dvd">
      "ids" />
      "region" />
    

  class>
    
    
 
以上是 实体的映射文件
    String hql = "from Item";
    List userlist = session.createQuery(hql).list();
 
Hibernate 会生成如下的SQL
select item0_.id as id0_,
             item0_.name as name0_,
             item0_1_.page as page1_,
             item0_2_.region as region2_,
             case
                 when item0_1_.sid is not null then
                    1
                 when item0_2_.ids is not null then
                    2
                 when item0_.id is not null then
                    0
             end as clazz_
    from t_Item item0_
    left outer join t_book item0_1_ on item0_.id = item0_1_.sid
    left outer join t_dvd item0_2_ on item0_.id = item0_2_.ids
 
 
但是如果是 Table per Concrete Class ,(一个子类对应一个表,父类没有表);
则会生成2条sql, 分别查询2个子表