JPA -无关联的左连接2个表

xtupzzrd  于 2022-12-13  发布在  其他
关注(0)|答案(5)|浏览(231)

我有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.第1栏'

2j4z5cfb

2j4z5cfb1#

只要实体之间没有关系,就不能在JPA中这样做。
解决方案:
1.使用原生查询。
1.在它们之间添加一个关系(最终是一个间接的懒惰关系)。A知道伪实体,伪实体知道B(但关系所有者是实体B),B知道伪实体。

bkhjykvo

bkhjykvo2#

关于Dimitri Dewaele的答案,此查询是CARTESIAN JOIN。CARTESIAN JOIN或CROSS JOIN会传回两个或多个链接表格中记录集的笛卡尔积。因此,它相当于内部链接,其中的链接条件一律评估为True或陈述式中没有链接条件。如果您想要了解更多相关信息,请使用下列链接:Sql Cartesian Joins

gudnpqoy

gudnpqoy3#

显然,从Hibernate 5.1开始,您现在就可以这样做了

wztqucjr

wztqucjr4#

您可以使用JPQL执行此操作:

FROM A a LEFT JOIN B b ON b.col1=a.col1
wgmfuz8q

wgmfuz8q5#

这可以通过JPA的以下查询实现:

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

相关问题