赛迪网 > IT技术 Java > Java读书频道-上
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Hibernate之映射继承关系(六) (1)

发布时间:2005.09.22 21:41     来源:赛迪网    作者:孙卫琴

精通Hibernate之映射继承关系(一)

精通Hibernate之映射继承关系(二)

精通Hibernate之映射继承关系(三)

精通Hibernate之映射继承关系(四)

精通Hibernate之映射继承关系(五)

Company与Employee类之间为一对多多态关联关系,如果继承关系树的根类对应一个表,或者每个类对应一个表,那么就能映射Company类的employees集合。本节介绍如何映射多对一多态关联。如图14-11所示,ClassD与ClassA为多对一多态关联关系。



图14-11 ClassD与ClassA为多对一多态关联关系


ClassA、ClassB和ClassC构成了一棵继承关系树,如果继承关系树的根类对应一个表,或者每个类对应一个表,那么可以按以下方式映射ClassD的a属性:

<many-to-one name="a"
class="ClassA"
column="A_ID"
cascade="save-update" />

假定与ClassD对应的表为TABLE_D,与ClassA对应的表为TABLE_A,在TABLE_D中定义了外键A_ID,它参照TABLE_A表的主键。

ClassD对象的a属性既可以引用ClassB对象,也可以引用ClassC对象,例如:

tx = session.beginTransaction();
ClassD d=(ClassD)session.get("ClassD",id);
ClassA a=d.getA();
if(a instanceof ClassB)
  System.out.println(((ClassB)a).getB1());
if(a instanceof ClassC)
  System.out.println(((ClassC)a).getC1());
tx.commit();

1 2 3 4 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Java中文问题详解之底层编码解剖 (09-22) · 颠覆Java开发的定律:无需创建对象 (09-22)
· 深入分析Windows和Linux动态库应用异同 (09-21) · 精通Hibernate之映射继承关系(五) (09-21)
· 精通Hibernate之映射继承关系(二) (09-21) · Java和JSP编程中应该注意的几个常见问题 (09-21)
· 在Eclipse 3.1中体验J2SE 5.0新特性之一 (09-21) · 技术专题巨献:内存泄漏,走开! (09-21)
· Java程序如何穿透带有密码验证的代理 (09-21) · Java新手必读:一飞冲天Java学习的捷径 (09-21)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 工信部“三定”公布 总编制731名设24司局
· 北京发电子商务监管意见 营利性网店须办照
· 直播 08中国城市信息化高峰论坛 案例点评
· 烽火网络校园解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统