【问题标题】:LEFT JOIN ON() in JPQLJPQL 中的 LEFT JOIN ON()
【发布时间】:2011-06-26 22:37:41
【问题描述】:

我有两个实体:

  • User: id:long, name:String
  • Player: id:long, owner:User, points:int

现在我想在一个 JPQL 查询中选择一个用户和他的关联玩家。在 SQL 中,我会这样做:

SELECT u.*, p.* FROM User u
LEFT JOIN Player p ON (p.owner_id = u.id)
WHERE u.name = ...

我的第一直觉是在 JPQL 中这样做

SELECT u, p FROM User u LEFT JOIN Player p ON (p.owner = u) WHERE u.name = ...

但我认为 JPQL 不支持 ON 子句。但是我确实需要它,因为User 没有引用Player(Player 以外的许多东西都可以附加到User)。 我该如何解决这个问题?

【问题讨论】:

    标签: java sql jpa entity jpql


    【解决方案1】:

    你有一个从Player 到User 的关系,所以你可以反转加入来关注它:

    SELECT u, p FROM Player p RIGHT JOIN p.owner u WHERE ...
    

    【讨论】:

    • 当你想在公共领域加入不相关的实体时无用的答案
    猜你喜欢
    • 2012-02-04
    • 2013-01-11
    • 2015-05-19
    • 2016-08-15
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多