Hibernate HQL语句返回0结果而不是1

时间:2016-06-16 13:21:31

标签: java hibernate hql

处理我的应用程序,限制用户可以看到的内容。 以下是我正在使用的课程:

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

2 个答案:

答案 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中joininner join的缩写,因此此查询将转换为sql作为inner join的查询。因此,如果fluxesMiniUsine无关,且User没有与Flux相关,则结果将为空。 您可以尝试left join

select mu
from MiniUsine mu
left join mu.fluxs f
left join f.users u
where u.userID = :id
相关问题