JPQL中的LEFT JOIN ON() [英] LEFT JOIN ON() in JPQL

查看:167
本文介绍了JPQL中的LEFT JOIN ON()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个实体:

  • User:id: long ,名称: String
  • Player:id: long ,所有者: User ,点数: int
  • User: id:long, name:String
  • Player: id:long, owner:User, points:int

现在,我想在一个JPQL查询中选择一个用户及其关联的播放器.在SQL中,我会这样:

Now I want to select a User and his associated Player in one JPQL query. In SQL I'd do it like this:

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

我的第一个直觉是在JPQL中做到这一点

My first instinct was to do it like this in JPQL

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

但是我不认为JPQL支持ON子句.但是我确实需要它,因为User没有对Player的引用(除了Player以外的许多其他东西都可以附加到User上). 我该如何解决?

But I don't think the ON clause is supported in JPQL. I do need it however, because User has no reference to Player (many things other than Player could be attached to a User). How can I solve this one?

推荐答案

您的关系从PlayerUser,因此您可以反转联接以遵循它:

You have a relationship from Player to User, so you can invert the join to follow it:

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

这篇关于JPQL中的LEFT JOIN ON()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆