JPA - 左连接没有关联的2个表

时间:2013-12-09 14:27:39

标签: database jpa join entity

我有 2个表 / 无关联的实体。 我可以在JPA中使用 交叉连接

FROM A as a, B as b WHERE b.col1=a.col1

如何执行左连接?

我想要A中的所有值,并在可能的情况下用B值填充它们,并在没有B的地方留下NULL。

不起作用:

FROM A as a LEFT JOIN B as b WHERE b.col1=a.col1
  

加入的预期路径!

     

路径无效:'b.col1'

3 个答案:

答案 0 :(得分:5)

只要实体之间没有关系,就不能在JPA中这样做。

解决方案:

  1. 使用原生查询。
  2. 在它们之间添加关系(最终是间接的懒惰关系)。间接我的意思是: A知道PseudoEntity, PseudoEntity知道B(但关系所有者是实体B), B知道PseudoEntity。

答案 1 :(得分:0)

关于Dimitri Dewaele的答案,此查询是一个CARTESIAN JOIN。 CARTESIAN JOIN或CROSS JOIN从两个或多个联接表中返回记录集的笛卡尔积。因此,它等同于内部联接,其中联接条件始终评估为True或语句中不存在联接条件。如果您想了解更多信息,请点击以下链接: Sql Cartesian Joins

答案 2 :(得分:-4)

JPA可以使用以下查询:

FROM A as a, B as b WHERE b.col1=a.col1 OR b.col1 IS NULL