在Spring服务(Spring Boot 3.0.6)中,我想返回以下信息:
可以使用 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]”
根据您提供的飞机
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