Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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

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在2个表之间进行内部联接_Hibernate_Jpa_Annotations_Jpql - Fatal编程技术网

Hibernate 如何使用JPA在2个表之间进行内部联接

Hibernate 如何使用JPA在2个表之间进行内部联接,hibernate,jpa,annotations,jpql,Hibernate,Jpa,Annotations,Jpql,如何编写一个JPA查询,使两个实体之间的连接不共享任何引用,我的意思是映射中没有定义任何关系 EntityA @Id long id String field1 String field2 EntityB @Id String field1 @Id String field2 如何在JPQL中编写这样的连接 select entityB from entityA,entityB where entityB.field1 = entityA.field1 and entityB.field2

如何编写一个JPA查询,使两个实体之间的连接不共享任何引用,我的意思是映射中没有定义任何关系

EntityA
@Id
long id

String field1
String field2

EntityB
@Id
String field1
@Id
String field2
如何在JPQL中编写这样的连接

select entityB from entityA,entityB
where entityB.field1 = entityA.field1
and entityB.field2 = entityA.field2

谢谢

如果这些实体之间没有任何显式关系,那么就不可能在JPQL中执行任何显式连接


您始终可以将查询写为笛卡尔乘积。根据您使用的RDBMS,它可能会优化查询,使其几乎与连接一样高效。然而,考虑到物理模型必须为此进行优化。这意味着索引,如果可能的话还有外键。如果没有这些,与连接相比,此查询将非常低效。

如果这些实体之间没有任何显式关系,则无法在JPQL中执行任何显式连接


您始终可以将查询写为笛卡尔乘积。根据您使用的RDBMS,它可能会优化查询,使其几乎与连接一样高效。然而,考虑到物理模型必须为此进行优化。这意味着索引,如果可能的话还有外键。如果没有这些,与连接相比,此查询将非常低效。

您考虑的是SQL,而不是ORM。在ORM中,您在实体@OneToMany、@ManyToOne、@ManyToMany等之间创建关系,ORM使用这些关系来确定如何将它们连接在一起

您需要更新实体以拥有这些关系,然后遍历对象模型以执行您想要执行的操作


这里是一个开始的地方:

您考虑的是SQL,而不是ORM。在ORM中,您在实体@OneToMany、@ManyToOne、@ManyToMany等之间创建关系,ORM使用这些关系来确定如何将它们连接在一起

您需要更新实体以拥有这些关系,然后遍历对象模型以执行您想要执行的操作


这里是一个开始的地方:

好吧,我不想创建数据库约束,创建此关系将生成此类约束。我如何定义此类关系而不生成数据库约束?您可以运行Hibernate而不生成约束-只是不配置Hibernate.hbm2ddl.autoOK获取此信息,但我没有要创建数据库约束并创建此关系将生成此类约束我如何定义此类关系而不生成数据库约束?您可以运行Hibernate而不生成约束-只是不配置Hibernate.hbm2ddl.auto