处理我的应用程序,限制用户可以看到的内容。 以下是我正在使用的课程:
User Flux MiniUsine
userID fluxID miniUsineID
fluxs miniUsine fluxs
users users
用户< - > Flux是ManyToMany
Flux - > MiniUsine是ManyToOne
我正在使用的声明是:
select mu
from MiniUsine mu
join mu.fluxs f
join f.users u
where u.userID = :id
这句话给了我0个结果,而我希望它给出一个。有什么问题吗?
编辑:我在数据库中的当前数据是:
1 user with userID = 7
1 row in a table USERS_FLUXS with userID = 7 and FluxID = 102
1 flux with fluxID = 102 and miniUsineID = 1
1 miniUsine with miniUsineID = 1
这就是为什么我希望返回一个MiniUsine
答案 0 :(得分:0)
检查此查询。希望它可以帮助你。
select mu
from MiniUsine as mu
inner join mu.fluxs as f
left outer join f.users as u
where u.userID = :id
答案 1 :(得分:0)
在HQL中join
是inner join
的缩写,因此此查询将转换为sql作为inner join
的查询。因此,如果fluxes
与MiniUsine
无关,且User
没有与Flux
相关,则结果将为空。
您可以尝试left join
select mu
from MiniUsine mu
left join mu.fluxs f
left join f.users u
where u.userID = :id