【转】http://blog.csdn.net/EJB_JPA/archive/2008/05/12/2437214.aspx
在JPA中,实体多态(polymorphism)的使用与Java的多态相同。实体的多态是指,当查询父类的实体时,也包含其子类实体。
下面以7.3.3.4小节中数据表中的数据为例,执行以下查询:
/**查询所有的EmployeeEO实体*/
String sql = "SELECT e FROM EmployeeEO e";
List result = entityManager.createQuery(sql).getResultList();
if (result!=null){
System.out.print("EmployeeEO size = "+result.size());
}
/**查询所有的ContractEmployeeEO实体*/
sql = "SELECT e FROM ContractEmployeeEO e";
result = entityManager.createQuery(sql).getResultList();
if (result!=null){
System.out.print("ContractEmployeeEO size = "+result.size());
}
/**查询所有的FTEmployeeEO实体*/
sql = "SELECT e FROM FTEmployeeEO e";
result = entityManager.createQuery(sql).getResultList();
if (result!=null){
System.out.print("FTEmployeeEO size = "+result.size());
}
代码执行后,输出结果为:
EmployeeEO size = 5
ContractEmployeeEO size = 3
FTEmployeeEO size = 1
当查询所有的EmployeeEO实体时,查询的是所有的EmployeeEO和它的所有子类,此时记录数是5;当查询ContractEmployeeEO时,查询的是ContractEmployeeEO和它的子类,此时记录数是3,而RegularEmployeeEO实体与ContractEmployeeEO实体在同一的继承层次上,所以不能查询出来;当查询FTEmployeeEO时,此时只有一个FTEmployeeEO的实体,所以此时记录数是1。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/EJB_JPA/archive/2008/05/12/2437214.aspx
分享到:
相关推荐
在一些项目中,会采用集成的关系来定义数据库实体类,比如:人(Person)与学生(Student),学生来源与人,所以人的基本属性学生也拥有;但学生有的一些属性,人就不具有。人与学生之间很显然就拥有了继承关系 ------...
简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关...
设计系统的实体联系图,即 ER 模型和关系模式,熟练使用 SQL 语句进行建立数据库、建立表、插入数据、删除数据、修改数据等操作,学会采用面向对象的思想,使用封装、继承、重载、多态这些特性,对实际问题进行面向...
实体和实体之间的一种关系。 例如:父子类之间 对于父类而言,他的一些东西(属性和方法)是可以共享的, 对于子类而言,它可以共享到父类的一些东西(属性和方法),那么 我们把父类与子类的这种关系称为...
其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。所谓对象就是真实世界中的实体,...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
支持面向对象的高级特性: JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型 4.JPA 包括 3方面的技术 ORM 映射元数据:JPA 支持 XML 和 JDK 5.0 注解两...
5.1.1 每个带有隐式多态的具体类一张表 5.1.2 每个带有联合的具体类一张表 5.1.3 每个类层次结构一张表 5.1.4 每个子类一张表 5.1.5 混合继承策略 5.1.6 选择策略 5.2 Hibernate类型系统...
一、技术要点:基于封装、继承、多态三大特性,结合单例模式实现数据库保存用户信息的操作 二、主要功能: ① 开户与登录,开户成功自动生成卡号与ID并将用户信息保存在数据库; ② 实现存款、取款、转账、改密及...
9.1.7. 隐式多态和其他继承映射混合使用 9.2. 限制 10. 与对象共事 10.1. Hibernate对象状态(object states) 10.2. 使对象持久化 10.3. 装载对象 10.4. 查询 10.4.1. 执行查询 10.4.2. 过滤集合 10.4.3. ...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...
10.6 继承关系映射 426 10.6.1 整个类层次对应一张表的 映射策略 427 10.6.2 连接子类的映射策略 430 10.6.3 每个具体类对应一张表的 映射策略 434 10.7 使用抽象实体和非实体父类 436 10.7.1 抽象实体 436 10.7.2 ...
这种系统并不需要是面向对象的,您完全可以使用第三代语言(3GL)来实现,因此,本文的模式语言将忽略映射继承和多态的特性。本文包含框架模式和几个关键的实现模式。PLoP学报[Kel+96b]包含了完整的模式语言,包括...
8.1.7. 隐式多态和其他继承映射混合使用 8.2. 限制 9. 持久化数据管理 9.1. 创建持久化对象 9.2. 加载载对象 9.3. 查询 9.3.1. 标量(Scalar)查询 9.3.2. IQuery接口 9.3.3. 过滤集合 9.3.4. 条件查询(Criteria ...
使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程,也即使得描述问题的问题空间与问题的解决方案空间在结构上尽可能一致,把客观世界中的实体抽象为问题域中的对象。 本项目以面向对象的...