如何在 jpql 中编写带子选择的左外连接?

问题描述 投票:0回答:0

我正在使用 hibernate 与 Postgres 数据库进行交互。我正在尝试进行的查询选择尚未分配给分支机构的产品。通过

branch_product
表,产品和分支之间存在多对多关系。我可以用原生 SQL 编写查询:

SELECT p.*
FROM product p
LEFT JOIN (
  SELECT bp.product_id
  FROM branch_product bp
  WHERE bp.branch_id = ?
  ) AS sub ON sub.product_id = p.id
WHERE p.tenant_id = ?
  AND sub.product_id IS NULL;

查询的工作方式是构建

sub
表,该表包含分公司所有产品的行。然后 Product 中没有加入
sub
的任何行都是我想要的 - 尚未添加到 Branch 的 Products。

虽然我还没有想出如何使用 jpql 来表达这个查询。如果我使用本机查询,则无法轻松加载休眠实体,因为未设置列的 json 映射。如果我可以使用 jpql 进行此查询,将会节省大量工作。感谢您提供的所有帮助!

postgresql hibernate jpql
© www.soinside.com 2019 - 2024. All rights reserved.