JPA多态与多个表的关联

时间:2013-10-02 06:28:16

标签: hibernate jpa polymorphic-associations

实体是否可能与多个表具有一对一的多态关联。假设一个实体有两个特定的列用于:

link_type - 标识应与

关联的表的列

link_id - 在标识表后定义表的外键的列。

2 个答案:

答案 0 :(得分:8)

我认为你的意思是多态关联的继承映射。

实体继承

JPA有一个强大的功能,称为实体继承,类似于java中的类继承。实体类可以扩展非实体类,非实体类可以扩展实体类。实体类既可以是抽象的,也可以是具体的。

继承策略

有3种继承策略

  • 每个具体课程策略表
  • 加入的子类策略
  • 单表策略

每个具体课程策略表

每个具体类继承映射策略的表基于为每个实体映射的单独表。每个类在DB中都有自己的表,而实体类是从基类继承的。这种策略的不同之处在于表格在逻辑上不是分开的。它们之间仍然存在继承。

加入的子类策略

连接表继承映射策略是基于连接到基表的单独表。有一些类继承自基类,数据表也有相同的方案,使用外键相互链接。

单一表策略

JPA映射具有称为继承映射的强大功能。它在JPA中具有与OOP概念中类似的概念。表和映射是继承的基类或表。有三种类型的映射策略,一种称为单表映射。

您可以在我的教程中看到所有这些内容的详细说明。请看一下。

另见

Entity Inheritance

The Table per Concrete Class Strategy

The Joined Subclass Strategy

Single Table Strategy

JPA Tutorial

Hibernate Reference

答案 1 :(得分:1)

我想我已经通过使用@Any或@ManyToAny注释找到了解决方案。这些不是标准的JPA注释,而是hibernate特定的注释。