【发布时间】:2019-05-27 15:58:57
【问题描述】:
我想简短而清楚地解决我的问题..我正在尝试从执行联接的数据库中检索数据以获得我想要的结果..
所以我有 3 张桌子,
EMPLOYEE:
emp_id -- PK
name..
surname..
dob.. etc
用户:
UserID PK
Username
Pass
emp_id fk
role_id fk
角色
RoleID pk
Description
我想执行一个查询来获得一个员工列表,这些员工是用户,并且 roleid =2; 我如何在 JPA 上做到这一点
我试过了
Select e from Employee e JOIN User u Join Role r where r.roleId = 2
但它仍然无法在不过滤 ID=2 的情况下获取所有员工
谢谢大家
【问题讨论】:
-
“但它仍然无法在不过滤 ID=2 的员工的情况下获取所有员工”您忘记了
ON子句,它接合了您的数据库现在正在执行它作为CROSS JOIN代替.. 我很想把这个问题投票为一个简单的印刷错误 -
如果这没有帮助,或者您可以弄清楚。我建议您阅读Why should I provide a Minimal Reproducible Example for a very simple SQL query? 并提供示例数据和预期结果。
-
Select * from Employee e inner join User u on e.emp_id= pr.emp_id inner join Role r on on r.roleID= u.roleId where r.roleID =2 我在 SQL 中试过这个查询,它工作得很好,这就是我试图在 JPA 中检索的内容
-
@RaymondNijland 不,这不是 SQL 查询,但 JPA 查询不一样,我读到您不应该指定 On 子句
-
在这种情况下,我将问题投票为 “寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及最短的在问题本身中重现它所必需的代码。”