【Java 】--jpa中继承的实现
来源:互联网 发布:陆地卫星数据特点 编辑:程序博客网 时间:2024/06/06 03:18
JPA中对象关系映射通常情况下是一个实体对应一个表,两个实体之间没有任何关系。如果两个实体之间是继承关系,那么该如何映射呢?
JPA中的实体支持继承映射,多态关联,多态查询。抽象类和具体的类都可以是实体,且都可以使用@Entity来注解,映射成实体,并查询封装成一个实体。实体类可以继承非实体类,非实体类也可以继承实体类。
JPA的继承映射有如下几种情况:
一、实体类继承抽象(具体)实体类
抽象类可以指定成为一个实体,抽象实体和具体实体的唯一区别只是抽象实体不能够被直接实例化。抽象实体能够被映射成一个实体并能够作为查询目标。
抽象实体类使用@Entity注解或在XML描述符表示成一个实体。
这种映射相对复杂,后面会专门写一篇文章来举例说明。这里就不再多说。
二、实体类继承映射超类(Mapped Superclasses)
实体可以继承自一个超类,这个超类提供了持久化实体状态(即属性或字段)和映射信息,但它本身不是一个实体。通常情况下,这种超类映射的的目的是定义多个实体共有的状态和映射信息。
映射超类和实体不一样,它不能够被查询,所以不能作为参数传递给EntityManager或Query 接口进行操作。映射超类定义的持久化关系必须是单向的。
抽象类或具体的类都可以作为映射超类,使用@MappedSuperclass注解(或mapped-superclass XML描述符元素)来指定映射超类。
映射超类不会生成单独的表,它的映射信息作用于继承自它的实体类。
映射超类能够像实体类一样被映射,只是它的映射将作用于继承自它的实体类,因为它本身不存在单独的表。当作用于子类时,继承的映射信息将作用于子类对应的表上。子类可以通过@AttributeOverride和AssociationOverride注解或对应的XML描述符元素来覆盖映射超类的映射信息。下面来看一个实例:
阅读全文
0 0
- 【Java 】--jpa中继承的实现
- Java中继承的实现
- 关于JPA实现类的继承
- JBoss中JPA的实现
- JPA的继承映射
- Java继承的实现
- Java中实现多重继承
- JPA实体继承的映射
- JPA实体继承的映射
- Hibernate的JPA 继承方式
- JPA实体继承的映射
- Java中接口实现类的多继承
- java 中继承,组合,重载,重写的实现原理
- java中继承Thread和实现Runnable的区别
- Java类中继承、接口实现的一些细节
- java中继承Thread 和实现Runnable的区别
- 简单实现JPA实体继承映射
- ajax中 实现的继承
- C语言实现printf函数
- MATLAB R2014a 安装Robotics Toolbox9.10
- 随笔17.10.15
- json_encode不对中文进行转码、json_decode解析json字符串返回NULL的处理方法
- python zipfile模块
- 【Java 】--jpa中继承的实现
- Android本地拒绝服务漏洞浅析
- 标准库是如何发起系统调用的
- 【leetcode】Keyboard Row题目的C++解法
- 122. Best Time to Buy and Sell Stock II
- Android Material Design 风格的新闻App
- SMPCUP2017——NLP
- RecyclerView使用 以及简单多条目
- AngularJS 注册表单验证