Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 具有多个表的JPA多态性关联_Hibernate_Jpa_Polymorphic Associations - Fatal编程技术网

Hibernate 具有多个表的JPA多态性关联

Hibernate 具有多个表的JPA多态性关联,hibernate,jpa,polymorphic-associations,Hibernate,Jpa,Polymorphic Associations,一个实体是否可能与多个表有一对一的多态性关联。假设一个实体有两个特定列,用于: link_type—标识应与哪个表关联的列 link_id—一旦标识了表,就定义表外键的列。我想您指的是多态关联的继承映射 实体继承 JPA有一个称为实体继承的强大功能,类似于java中的类继承。实体类可以扩展非实体类,非实体类可以扩展实体类。实体类可以是抽象的,也可以是具体的 继承策略 有3种继承策略 每个具体类的表策略 连接子类策略 单表策略 每个具体班级策略的表格 每个具体类的表继承映射策略基于为每个实体映

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

link_type—标识应与哪个表关联的列


link_id—一旦标识了表,就定义表外键的列。

我想您指的是多态关联的继承映射

实体继承

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

继承策略

有3种继承策略

  • 每个具体类的表策略
  • 连接子类策略
  • 单表策略
每个具体班级策略的表格

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

加入子类策略

联接表继承映射策略基于联接到基表的独立表。有些类是从基类继承的,数据表也有相同的模式,使用外键彼此链接

单表策略

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

您可以在我的教程中看到所有这些的详细说明。请看它们

另见


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

嗨,erencan,我认为继承策略不能解决这个设计问题。您能在问题中给出一些细节吗?地图、数据库表分机。请发布问题的解决方案,此答案对读者毫无帮助。不应选择此答案作为接受答案,因为它对原始问题实际上没有任何解决方案