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

Hibernate之映射继承关系(三) (3)

发布时间:2005.09.15 22:18     来源:赛迪网    作者:孙卫琴

其中ID为1和2的记录的EMPLOYEE_TYPE字段的取值为"HE",因此它们对应HourlyEmployee类的实例,其中ID为3和4的记录的EMPLOYEE_TYPE字段的取值为"SE",因此它们对应SalariedEmployee类的实例。

这种映射方式要求EMPLOYEES表中和子类属性对应的字段允许为null,例如ID为1和2的记录的SALARY字段为null,而ID为3和4的记录的RATE字段为null。如果业务需求规定SalariedEmployee对象的rate属性不允许为null,显然无法在EMPLOYEES表中为SALARY字段定义not null约束,可见这种映射方式无法保证关系数据模型的数据完整性。

由于HourlyEmployee类和SalariedEmployee类没有单独的映射文件,因此在初始化Hibernate时,只需向Configuration对象中加入Company类和Employee类:

Configuration config = new Configuration();
config.addClass(Company.class)
.addClass(Employee.class);

如果Employee类不是抽象类,即它本身也能被实例化,那么可以在元素中定义它的discriminator值,形式如下:

<class name="mypack.Employee" 
table="EMPLOYEES" 
discriminator-value="EE">

以上代码表明,如果EMPLOYEES表中一条记录的EMPLOYEE_TYPE字段的取值为"EE",那么它对应Employee类本身的实例。

14.2.2 操纵持久化对象

这种映射方式支持多态查询,对于以下查询语句:

List employees=session.find("from Employee");

Hibernate会检索出所有的HourlyEmployee对象和SalariedEmployee对象。此外,也可以单独查询Employee类的两个子类的实例,例如:

List hourlyEmployees=session.find("from HourlyEmployee");

<<上一页 1 2 3 4 5 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Java网络编程之URI、URL的详细介绍(下) (09-15) · 精通Hibernate之映射继承关系(一) (09-15)
· Java网络编程之URI、URL研究专题(上) (09-15) · 在Eclipse 3.1中体验J2SE 5.0新特性之一 (09-15)
· 一周技术专题巨献:内存泄漏,走开! (09-14) · 精通Hibernate之映射继承关系(二) (09-14)
· 在Eclipse 3.1中体验J2SE 5.0新特性二 (09-14) · 技术进阶新篇 关于Java线程的深入探讨 (09-14)
· 精通Hibernate之映射继承关系(一) (09-14) · Java之父出风头 数字电视标准有望采用Java (09-14)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 移动信息化市场方兴未艾 企业呼唤标准出台
· 如何把握企业价值差异 避免CRM与SCM脱节
· 齐看四大厂商的SaaS动态 ERP案例分析
· 通方期货CRM解决方案 方正电子公文系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统