【问题标题】:SQL to JPQL left join with is nullSQL to JPQL left join with is null
【发布时间】:2015-09-22 14:10:12
【问题描述】:

我有两个实体:Profile 和 ProfileClubMapping。 ProfileClubMapping 由 Profile_ID、Club_ID 和 Status 组成。它用作连接表。 我现在想选择所有配置文件,如果存在具有特定 Club_ID 的 ProfileClubMapping。我成功写了一条SQL:

SELECT p.LASTNAME, pcm.STATUS FROM PROFILE p 
LEFT JOIN PROFILECLUBMAPPING pcm ON pcm.PROFILE_ID = p.ID AND pcm.CLUB_ID = 480

但我无法将其转换为 jpql。我尝试了类似的方法:

SELECT p.username,pcm FROM Profile p 
LEFT JOIN ProfileClubMapping pcm ON pcm.profile = p 
WHERE pcm.club.id = 480 OR pcm is null

唯一缺少的是完全没有任何 ProfileClubMapping 的配置文件。你有什么想法吗?

【问题讨论】:

  • 左连接where条件为内连接,需要将where子句移到on子句。
  • 你完全正确!解决了我的问题!

标签: mysql sql jpa eclipselink jpql


【解决方案1】:

where条件的left join是inner join,需要将where子句移到on子句。

【讨论】:

    【解决方案2】:

    如果我们假设您的 Profile 实体包含名为 mappingsProfileClubMapping 实体的集合,那么执行此操作的 JPQL 将是:

    SELECT p.username, pcm.status
    FROM Profile p LEFT JOIN p.mappings pcm
    WHERE pcm.club.id = 480
    

    如果没有,也许您可​​以发布实体类的代码以帮助我们创建更好的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 2021-12-21
      • 2010-12-13
      相关资源
      最近更新 更多