hibernate中的继承关系的处理手法有三种,下面小结之,外加上ejb3的这方面的描述.
  比如有个动物类animal,假设有如下属性
     private int id;
  private String sex;  而它的子类比如bird鸟类,有另外的属性hight,
    它的子类比如pig类,有另外的属性weight,
那么三类办法来处理,在hibernate中
    1) 每个子类对应一张表   bird类 有id,sex,hight属性
   pig 类有 id,sex,weight属性
     它们有各自的xxx.hbm.xml了
 
2)  table per subclass
      这个其实就是把公共属性放到父类中去,各子类只保留其子类特有的属性,并且通过id等进行关联,比如
   animal类里,还是有id,sex属性 
   bird类里,有id,hight属性
   pig类里,有id,weight属性
       而animal.hbm.xml中的设置为
     <joined-subclass name="pig" table="pig>
        <key column="id>
       <prperty name="weight"/>    <joined-subclass name="bird" table="pig>
        <key column="id>
       <prperty name="height"/>   
3) 冗余分类
       比如animal表如下
        id    sex height  weight      好明显这里是有冗余的哦,但可以加个标志来区分,比如p为pig类,b为bird类
     下面看anmimal.hbm.xml
      ...........     <discriminator column="type" type="string">
           <subclass name="pig" discriminator-value="P">
          <prperty name="weight"/></subclass>
   <subclass name="bird" discriminator-value="b">
          <prperty name="height"/> </subclass>
  
  再看在ejb3里如何玩:
    animal.java
    import javax.persistence.DiscriminatorColumn;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Inheritance;
 import javax.persistence.InheritanceType;@Entity
 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
 @DiscriminatorColumn(name="animalType")
 @DiscriminatorValue("A")
 public class Animal {
  
  @Id
  private int id;
  private String sex;
  
  public int getId() {
   return id;
  }
  public void setId(int id) {
   this.id = id;
  }
  public String getSex() {
   return sex;
  }
  public void setSex(String sex) {
   this.sex = sex;
  }
 } 
   bird.java
   import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;@Entity
 @DiscriminatorValue("B")
 public class Bird extends Animal{
  private int height; public int getHeight() {
   return height;
  } public void setHeight(int height) {
   this.height = height;
  }
 } 
pig.java
   @Entity
 @DiscriminatorValue("P")
 public class Pig extends Animal{
  private int weight; public int getWeight() {
   return weight;
  } public void setWeight(int weight) {
   this.weight = weight;
  }
 }