高分求解,关于hibernate的问题(table per class hierarchy)

appleIIappleII 2006-08-28 01:54:08
我有一个表A,四个字段 pk(主键),type(类型,分为学生和教师二种值),code(具体的编号,包括学生编号,教师编号等),num(业务流程号)对这张表我根据type的不同变成二个subClass,我还有一张表T(表示教师表,既教师的信息),其中有一字段code(教师编号),当表A中的"type=教师"时,它的值与表A中的code相关联,在这种情况下,如何建立表T与表A的subClass的关联,
其中hibernate的配置文件是怎么样的,相关的类是怎么样,最好给个例子,谢谢!
...全文
242 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
appleIIappleII 2006-09-06
  • 打赏
  • 举报
回复
M3tdw2A7tVe8Xxhd 2006-08-31
  • 打赏
  • 举报
回复
利用<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">
appleIIappleII 2006-08-31
  • 打赏
  • 举报
回复
to badiwd1216()
你说得没错,我已经采用了<discriminator><subclass>标签,见我的标题是(table per class hierarchy),既对表A采用了<discriminator><subclass>标签,但问题表T如何与产生的subclass进行关联呢?
badiwd1216 2006-08-31
  • 打赏
  • 举报
回复
如果已经建了两张表,就要用<joined-subclass>标签了
badiwd1216 2006-08-31
  • 打赏
  • 举报
回复
to:appleIIappleII()
既然你已经使用了<discriminator><subclass>标签;
那就不用再用表T了
badiwd1216 2006-08-30
  • 打赏
  • 举报
回复
to:appleIIappleII() 明白你的意思;
推荐你使用<discriminator><subclass>标签;
你的其实还是属于继承关系
appleIIappleII 2006-08-29
  • 打赏
  • 举报
回复
to badiwd1216()
可能我没有表达清楚,请示表T与表A没有任何关系,只有在表A中的type=教师 时,表A的code才等于T的code,既只有在这种时候表T才与表A有关联。
to lbx19822004()
采用联合,就会出现记录变多。
lbx19822004 2006-08-29
  • 打赏
  • 举报
回复
不用再另外建立关联映射了
就在HQL中联合一下就行了
badiwd1216 2006-08-29
  • 打赏
  • 举报
回复
如果按照楼主的意思,这里两张表的继承关系是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的对象关系映射方面的东西,或许有些帮助。
WhyAndAnswer 2006-08-29
  • 打赏
  • 举报
回复
关注

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧