如果按照楼主的意思,这里两张表的继承关系是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的对象关系映射方面的东西,或许有些帮助。
并且在整个继承关系中,是每个类对应一张表;
利用<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的对象关系映射方面的东西,或许有些帮助。
就在HQL中联合一下就行了
可能我没有表达清楚,请示表T与表A没有任何关系,只有在表A中的type=教师 时,表A的code才等于T的code,既只有在这种时候表T才与表A有关联。
to lbx19822004()
采用联合,就会出现记录变多。
推荐你使用<discriminator><subclass>标签;
你的其实还是属于继承关系
你说得没错,我已经采用了<discriminator><subclass>标签,见我的标题是(table per class hierarchy),既对表A采用了<discriminator><subclass>标签,但问题表T如何与产生的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">
既然你已经使用了<discriminator><subclass>标签;
那就不用再用表T了