如何在2个表与JPA之间建立内部联接

时间:2012-03-20 15:46:42

标签: 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 = entityA.field2

由于

2 个答案:

答案 0 :(得分:3)

你在思考SQL,而不是ORM。在ORM中,您可以在实体(@OneToMany@ManyToOne@ManyToMany等)之间创建关系,并且ORM使用这些关系来确定它们应如何将它们连接在一起。

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

这是一个入门的地方:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-association

答案 1 :(得分:1)

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

您始终可以将查询记为笛卡尔积。根据您使用的RDBMS,可能优化查询几乎与连接一样有效。但是,请考虑到物理模型必须针对该效果进行优化。这意味着索引,如果可能的话,外键。如果没有这些,与连接相比,此查询的效率非常低。