【Java 】--jpa中继承的实现

原创 2017年10月15日 22:09:18

JPA中对象关系映射通常情况下是一个实体对应一个表,两个实体之间没有任何关系。如果两个实体之间是继承关系,那么该如何映射呢?


JPA中的实体支持继承映射,多态关联,多态查询。抽象类和具体的类都可以是实体,且都可以使用@Entity来注解,映射成实体,并查询封装成一个实体。实体类可以继承非实体类,非实体类也可以继承实体类。

JPA的继承映射有如下几种情况:

一、实体类继承抽象(具体)实体类
抽象类可以指定成为一个实体,抽象实体和具体实体的唯一区别只是抽象实体不能够被直接实例化。抽象实体能够被映射成一个实体并能够作为查询目标。
抽象实体类使用@Entity注解或在XML描述符表示成一个实体。

这种映射相对复杂,后面会专门写一篇文章来举例说明。这里就不再多说。

二、实体类继承映射超类(Mapped Superclasses)
实体可以继承自一个超类,这个超类提供了持久化实体状态(即属性或字段)和映射信息,但它本身不是一个实体。通常情况下,这种超类映射的的目的是定义多个实体共有的状态和映射信息。
映射超类和实体不一样,它不能够被查询,所以不能作为参数传递给EntityManager或Query 接口进行操作。映射超类定义的持久化关系必须是单向的。
抽象类或具体的类都可以作为映射超类,使用@MappedSuperclass注解(或mapped-superclass XML描述符元素)来指定映射超类。
映射超类不会生成单独的表,它的映射信息作用于继承自它的实体类。

映射超类能够像实体类一样被映射,只是它的映射将作用于继承自它的实体类,因为它本身不存在单独的表。当作用于子类时,继承的映射信息将作用于子类对应的表上。子类可以通过@AttributeOverride和AssociationOverride注解或对应的XML描述符元素来覆盖映射超类的映射信息。下面来看一个实例:

版权声明:本文为博主原创文章,未经博主允许不得转载。

简单实现JPA实体继承映射

一个简单实现 父类加注解:@MappedSuperclass   @MappedSuperclass public class Traceability implements Serializ...
  • qq_27575627
  • qq_27575627
  • 2017年05月16日 15:06
  • 447

JPA实体继承实体的映射策略

注:这里所说的实体指的是@Entity注解的类 继承映射使用@Inheritance来注解,它的strategy属性的取值由枚举InheritanceType来定义(包括SINGLE_TABLE、TA...
  • mhmyqn
  • mhmyqn
  • 2014年07月20日 21:11
  • 12075

JPA实体继承的映射

JPA中对象关系映射通常情况下是一个实体对应一个表,两个实体之间没有任何关系。如果两个实体之间是继承关系,那么该如何映射呢? JPA中的实体支持继承映射,多态关联,多态查询。抽象类和具体的类都可以是...
  • mhmyqn
  • mhmyqn
  • 2014年07月20日 17:55
  • 10493

jpa 继承策略

JAP实现继承有三种类型.假设有A.B.C三个类,A为基类,B,C均为A的子类.那么三种设计方式分别为: 1.A.B.C共用一张表 2.每个类分层结构一张表A.B.C各一张表,各自包含自己的属性....
  • xpsharp
  • xpsharp
  • 2013年03月05日 09:32
  • 2221

spring-data-jpa实体继承

spring-jpa中我们要将SQL映射到对象,尤其是在spring boot这种高度自动化的环境下使用,大量的最优目录结构与命名规则可以大大降低配置,约定大于配置贯穿其中。例如我们定义查询dao,继...
  • micro_hz
  • micro_hz
  • 2017年07月08日 14:54
  • 980

原来Java中的继承和C#中的继承是不一样的

因为之前在学校里学的是Java,C#是自学的,一直感觉Java和C#就像是孪生兄弟,不过今天才发现原来Java中的继承和C#中的继承还是有点不一样的 在Java中子类继承父类的方法,如果在子类重新定...
  • xiaxiaoying2012
  • xiaxiaoying2012
  • 2016年03月10日 23:53
  • 1175

Java继承_概念与实现(一)

继承就是子类继承父类行为,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。         概念不容易理解,举个大家都熟悉的魔兽游戏例子,加深一下理解继承。          通过上面...
  • widenstage
  • widenstage
  • 2017年04月27日 21:40
  • 366

JPA 菜鸟教程 15 继承-一个表-SINGLE_TABLE

继承映射策略 一个类继承结构一个表的策略。这是继承映射的默认策略。 举例 如果实体类Teacher继承实体类Person,实体类Student也继承自实体Person,那么只会映射成一个表,这个...
  • JE_GE
  • JE_GE
  • 2016年12月21日 13:26
  • 706

java中继承与接口的区别

继承和借口都能实现代码重用,提高开发效率。接下来概述下两者的区别与特性。首先看接口,它一般由常量,方法(没有方法体)组成,其实质是定义一套规范供后者使用。比如说电脑生者商和其他配件生产商各自开发自己的...
  • zfireear
  • zfireear
  • 2016年03月01日 17:06
  • 2860

java继承类与实现接口

java 继承 接口
  • hy771213
  • hy771213
  • 2017年03月29日 22:56
  • 1833
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java 】--jpa中继承的实现
举报原因:
原因补充:

(最多只允许输入30个字)