【转】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
分享到:
相关推荐
因此,面向对象编程思想应运而生,其核心理念是对现实世界中的实体进行抽象建模,将其特性封装成类,进而通过继承和多态等机制实现代码复用和灵活性提升。 #### 2. 继承的意义 **继承**是面向对象编程中的一个重要...
描述部分虽然为空,但通常情况下,多态查询可能涉及到的概念包括:继承、多态性、动态类型、实体类、继承层次结构的映射、集合的多态处理等。根据给出的博客链接,我们可以推测该博客可能详细讲解了这些概念在...
C++重点复习题(多态和继承) 本文将对C++重点复习题(多态和继承)进行详细解释,涵盖了编程语言C++的多项重要知识点。 一、编程语言C++的编写步骤 编写C++程序需要经过编辑、编译、连接和运行四个步骤。编辑是...
Java是一种面向对象的编程语言,其三大特性是封装、继承和多态。封装是指将数据和操作这些数据的方法捆绑在一起,形成一个独立的实体——类。继承是子类继承父类的属性和方法,使得代码复用变得可能。多态则是指同一...
面向对象编程是现代软件开发中的核心概念,它主要由三个基本特征构成:继承、封装和多态。这些特性使得代码更加模块化、可复用和易于维护。 **继承(Inheritance)** 继承是面向对象编程的一个关键特性,它允许一个...
### Java语言实验3指导面向对象程序设计:继承、封装、多态 #### 实验目标概述 本次实验的主要目的是深入理解并实践Java中的面向对象编程(OOP)核心概念——继承、封装与多态。通过实际操作,学员将能够更加熟练地...
在C++编程中,利用面向对象的特性,如类与对象、继承和多态,可以高效地实现各种问题的解决方案。本项目以计算不同平面图形的面积为例,展示了这些概念的应用。以下是关于“C++图形面积计算”的详细知识点: 1. 类...
前者关注于数据库中的对象存储和检索,确保在ORM框架如Hibernate中正确地处理继承关系;后者则专注于JSON序列化和反序列化的处理,使得在HTTP请求和响应中能够正确地表示和恢复多态对象。这两个注解结合使用,可以...
在Java编程语言中,继承、抽象和多态是面向对象编程的三大核心概念,它们构成了Java类层次结构的基础,使得代码更加灵活、可扩展且易于维护。以下是对这些概念的详细解释: ### 继承(Inheritance) 继承是Java中...
封装、继承和多态是面向对象编程的三大基石,它们在C#中扮演着至关重要的角色。 封装是对象和类概念的基础,它允许我们将数据和操作数据的方法捆绑在一起,形成一个独立的实体,即类。在C#中,我们通过类来实现封装...
C 语言作为一种结构化编程语言,本身并不直接支持面向对象特性,如封装、继承和多态。然而,通过一些技巧和库,我们可以模拟实现这些概念。以下将详细探讨如何在 C 语言中实现这些面向对象编程的关键元素。 1. 封装...
面向对象(Object-Oriented)编程是计算机编程中的一种方法论,它强调在程序设计中使用对象来表示现实世界中的概念或实体。面向对象的三个基本特征是封装、继承和多态,这三者共同构成了面向对象编程的核心。下面将...
### 学习笔记: 抽象封装、继承、多态 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。对象是由数据(即字段或属性)和对这些数据进行...
简而言之,多态意味着一个接口可以有多种不同的实现,或者一个实体可以表现出多种形态。 #### 多态的实现原理 多态的实现依赖于以下几个关键概念: 1. **继承**:继承是多态的基础之一,它定义了类之间的层次结构...
Python 中的面向对象三大特征:封装、继承、多态 Python 是一门面向对象编程语言,面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将现实世界中的实体抽象化为类和对象,类是抽象的模板,对象...
只有当父类和子类在数据库中有正确的继承关系映射时,多态加载才能正常工作。 总的来说,理解Hibernate的加载方式和多态加载对于优化数据库操作和提高代码的灵活性至关重要。开发者需要根据具体需求选择合适的加载...
**Java语言程序设计-第七章 类的封装、多态和继承** 在Java编程语言中,类的封装、多态和继承是面向对象编程的三大核心特性。这些概念为软件开发提供了强大的抽象能力和代码复用机制,使得程序设计更加灵活、高效。...
在实际项目中,你可能会遇到的问题包括如何处理继承层次结构中的懒加载、如何优化查询效率、如何处理多态查询等。通过阅读和理解JPA的源码,以及使用相关工具,如Hibernate作为JPA的实现,可以帮助你更好地理解和...
类之间可以通过继承关系来实现代码重用,一个类可以继承另一个类的属性和方法。此外,抽象类用于定义共同特征,不能直接实例化。接口则提供了一种规范,定义了一组方法签名,但不包含具体实现,实现了接口的类必须...
面向对象编程(Object-Oriented Programming,OOP)的核心理念在于模拟现实世界中的实体和行为,将复杂的系统拆分成易于理解和管理的独立对象。在C#中,面向对象的三大特性——封装、继承和多态,是实现这一目标的...