如何在 JPQL 中编写返回 RIGHT null 的连接查询?

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

在Spring服务(Spring Boot 3.0.6)中,我想返回以下信息:

  • 属于某个用户且具有publish=True的对象ResolutionList
  • 对于每个ResolutionList,具有publish=True的关联Resolution对象的列表。 请注意,此解决方案列表可能为空,我仍然想返回带有空列表的解决方案列表。

可以使用 JPQL 来做到这一点吗?

使用标准 SQL,我可以轻松地做到这一点,例如:

SELECT * FROM resolution_list rl left JOIN resolution r on r.resolution_list_id=rl.id and r.publish = true WHERE rl.user_id=?1 and rl.publish=true

但是,似乎无法找到一种方法来翻译此 JPQL,并且当没有分辨率匹配条件时仍然能够返回带有空列表的分辨率列表。

我已经尝试过

SELECT rl FROM ResolutionList rl LEFT JOIN  Resolution r on r.publish=true WHERE rl.userId=?1 and rl.publish=true
,但ON子句似乎被忽略了。

我也考虑过将其作为nativeQuery执行,但是两个表中都有同名的列,所以我最终得到“JpaSystemException:在自动发现本机sql查询期间遇到重复的sql别名[id]”

spring jpql
1个回答
0
投票

根据您提供的飞机

SQL

SELECT * FROM resolution_list rl left JOIN resolution r on r.resolution_list_id=rl.id and r.publish = true WHERE rl.user_id=?1 and rl.publish=true

JPQL
应该有下一个实体:

SELECT rl FROM ResolutionList rl
    LEFT JOIN  Resolution r ON r.resolutionListId = rl.id
          WHERE rl.userId = ?1 AND rl.publish = true
            AND r.publish = true
© www.soinside.com 2019 - 2024. All rights reserved.