我正在使用 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 进行此查询,将会节省大量工作。感谢您提供的所有帮助!