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

Dim*_*ele 6 database entity jpa join

我有2个没有关联的 /实体.我可以去JPA 交叉加入

FROM A as a, B as b WHERE b.col1=a.col1
Run Code Online (Sandbox Code Playgroud)

我怎样才能进行左连接?

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

不起作用:

FROM A as a LEFT JOIN B as b WHERE b.col1=a.col1
Run Code Online (Sandbox Code Playgroud)

加入的路径!

路径无效:'b.col1'

And*_*i I 6

只要实体之间没有关系,您就无法在JPA中执行此操作.

解决方案:

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


Dim*_*ele -5

使用 JPA 可以通过以下查询实现此目的:

FROM A as a, B as b WHERE b.col1=a.col1 OR b.col1 IS NULL
Run Code Online (Sandbox Code Playgroud)

  • 这与 LEFT JOIN 不同。假设您有 b.col1=3 而没有 a.col1=3。您的查询不会返回该行,但 LEFT JOIN 将返回它。 (4认同)