继承映射关系 subclass的查询

 Person大类的映射文件配置

1 <hibernate-mapping package="com.zh.hibernate.subclass">
 2
 3     <class name="Person" table="PERSONS" discriminator-value="PERSONS">
 4
 5         <id name="id" type="java.lang.Integer">
 6             <column name="ID" />
 7             <generator class="native" />
 8         </id>
 9
10        <discriminator column="TYPE" type="string"></discriminator>
11
12         <property name="name" type="java.lang.String">
13             <column name="NAME" />
14         </property>
15
16         <property name="age" type="java.lang.String">
17             <column name="AGE" />
18         </property>
19
20            <subclass name="Student" discriminator-value="STUDENT">
21                <property name="school" type="string" column="SCHOOL"></property>
22            </subclass>
23
24     </class>
25
26 </hibernate-mapping>

查询语句的区别

Hibernate:
    select
        person0_.ID as ID1_0_0_,
        person0_.NAME as NAME3_0_0_,
        person0_.AGE as AGE4_0_0_,
        person0_.SCHOOL as SCHOOL5_0_0_,
        person0_.TYPE as TYPE2_0_0_
    from
        PERSONS person0_
    where
        person0_.ID=?
11, zzqq
Hibernate:
    select
        student0_.ID as ID1_0_0_,
        student0_.NAME as NAME3_0_0_,
        student0_.AGE as AGE4_0_0_,
        student0_.SCHOOL as SCHOOL5_0_0_
    from
        PERSONS student0_
    where
        student0_.ID=?
        and student0_.TYPE=‘STUDENT‘
时间: 2024-11-06 09:44:42

继承映射关系 subclass的查询的相关文章

继承映射关系 joinedsubclass的查询

会出现下面这样的错一般是配置文件中的mapping和映射文件中的package路径或者class中的name路径不一致 org.hibernate.MappingException: Unknown entity: com.zh.hibernate.joinedsubclass.Student    at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1141)    at

EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子

EF里的继承映射关系TPH.TPT和TPC的讲解以及一些具体的例子 本章节讲解EF里的继承映射关系,分为TPH.TPT.TPC.具体: 1.TPH:Table Per Hierarchy 这是EF的默认的继承映射关系:一张表存放基类和子类的所有列,自动生成的discriminator列用来区分基类和子类的数据.新建一个度假村Resort实体类试试: /// <summary> /// 度假村类 /// </summary> public class Resort : Lodging

hibernate笔记--继承映射关系的三种实现方式

单表继承映射(一张表): 假设我们现在有三个类,关系如下: Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映射来建表,最后生成的表是这样的: 可以看到我们只需要建立一张表就可以维护这个关系,这种方式就是单表继承映射,下面介绍配置方法: 新建实体类Person ,Student,和Teacher : public class Person { private int id; private String n

hibernate的3种继承映射关系总结——TPH,TPS,TPC

Java类中有继承关系,相应的在hibernate中,也有继承关系,子类反应到数据库中,就有多种实现形式了,子类和父类可以映射到同一张表中,子类也可以单独映射成一张表,但是用不同的标签实现,子类表和父类表的关系也不同. 下面对以前做的project进行总结一下 为了将程序领域中的继承关系反映到数据 中,Hibernate为我们提供了3中方案: 第一种方案:每棵类继承树一张表(Table Per Hierarchy)TPH 第二种方案:每个子类一张表(Table Per Subclass)TPS

继承映射关系 TPH、TPT、TPC&lt;EntityFramework6.0&gt;

每个类型一张表[TPT] 声明方式 public class Business { [Key] public int BusinessId { get; protected set; } public string Name { get; set; } public string LicenseNumber { get; set; } } public class Retail : Business { public string Address { get; set; } public str

hibernate 继承映射

对于面向对象的程序设计语言而言,继承和多态是两个最基本的概念.Hibernate 的继承映射可以理解持久化类之间的继承关系.例如:人和学生之间的关系.学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到. Hibernate支持三种继承映射策略: 使用 subclass 进行映射:将域模型中的每一个实体对象映射到一个独立的表中,也就是说不用在关系数据模型中考虑域模型中的继承关系和多态. 使用 joined-subclass 进行映射: 对于继承关系中的子类使用同一个表

Hibernate 映射关系

映射组成关系 •建立域模型和关系数据模型有着不同的出发点: –域模型: 由程序代码组成, 通过细化持久化类的的粒度可提高代码的可重用性, 简化编程 –在没有数据冗余的情况下, 应该尽可能减少表的数目, 简化表之间的参照关系, 以便提高数据的访问速度 •Hibernate 把持久化类的属性分为两种: –值(value)类型: 没有 OID, 不能被单独持久化, 生命周期依赖于所属的持久化类的对象的生命周期 –实体(entity)类型: 有 OID, 可以被单独持久化, 有独立的生命周期 •显然无法

[原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Hibernate4.x之映射关系--继承映射

Hibernate的继承映射可以理解为持久化类之间的继承关系.例如:人和学生之间的关系.学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到. Hibernate支持以下三种继承映射策略: 使用subclass进行映射:将域模型中的每一个实体对象映射到一个独立的表中,也就是说不用在关系数据模型中考虑域模型中的继承关系和多态 使用joined-subclass进行映射:对于继承关系中的子类使用同一个表,这就需要在数据库表汇总增加额外的区分子类类型的字段 使用union-