如果按照楼主的意思,这里两张表的继承关系是T继承自A,
并且在整个继承关系中,是每个类对应一张表;
利用<joined-subclass>标签
在A.hbm.xml中,
<hibernate-mapping>
   <class ……>
      <id>
         ……
      </id>
      <……其他的属性映射……>
      <joined-subclass name="class.name"
                       table="T">
                <key column="type">(建议这里使用pk主键关联而不是type)
                <……映射其他属性……与一般情况相同>
      </joined-subclass>
然后在hibernate.cfg.xml中加上<mapping resource="A.hbm.xml">
其实另外一种方法是就只使用一张表A来映射教师T和A的整个继承关系
这时使用的是<discriminator><subclass>标签在这两种方法中,都已经映射了教师和学生的资源,因此不需要再另外配置各自的*.hbm.xml文件。以上是个人意见,请高手指点。
楼主有空可以看看有关hibernate的对象关系映射方面的东西,或许有些帮助。

解决方案 »

  1.   

    不用再另外建立关联映射了
    就在HQL中联合一下就行了
      

  2.   

    to badiwd1216() 
    可能我没有表达清楚,请示表T与表A没有任何关系,只有在表A中的type=教师 时,表A的code才等于T的code,既只有在这种时候表T才与表A有关联。
    to lbx19822004() 
    采用联合,就会出现记录变多。
      

  3.   

    to:appleIIappleII() 明白你的意思;
    推荐你使用<discriminator><subclass>标签;
    你的其实还是属于继承关系
      

  4.   

    to badiwd1216() 
    你说得没错,我已经采用了<discriminator><subclass>标签,见我的标题是(table per class hierarchy),既对表A采用了<discriminator><subclass>标签,但问题表T如何与产生的subclass进行关联呢?
      

  5.   

    利用<joined-subclass>标签
    在A.hbm.xml中,
    <hibernate-mapping>
       <class ……>
          <id>
             ……
          </id>
          <……其他的属性映射……>
          <joined-subclass name="class.name"
                           table="T">
                    <key column="type">(建议这里使用pk主键关联而不是type)
                    <……映射其他属性……与一般情况相同>
          </joined-subclass>
    然后在hibernate.cfg.xml中加上<mapping resource="A.hbm.xml">
      

  6.   

    to:appleIIappleII() 
    既然你已经使用了<discriminator><subclass>标签;
    那就不用再用表T了
      

  7.   

    如果已经建了两张表,就要用<joined-subclass>标签了