2016-06-16 4 views
0

ユーザが見ることができる制限に関する私のアプリケーションの作業中です。ここ は、私が使用している私のクラスです:Hibernate HQLステートメントは、1の代わりに0の結果を返します。

User  Flux   MiniUsine 
userID fluxID   miniUsineID 
fluxs miniUsine  fluxs 
     users   users 

ユーザー< - >フラックスは、多対多

フラックスされる - > MiniUsineがManyToOne

である私が使用している文は次のとおりです。

select mu 
from MiniUsine mu 
join mu.fluxs f 
join f.users u 
where u.userID = :id 

このステートメントは、私が1つを与えると期待している間、私に0の結果を与えています。何が問題なのか?

EDIT:データベース内の私の現在のデータは以下のとおりです。

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 

私は1 MiniUsineこのクエリをチェック

+0

なぜあなたは1つを期待していますか? – Jens

+0

私の考えはあなたの期待が間違っているということです。しかし、あなたはデータが何であるか、エンティティのコードは何か、IDは何か、そしてクエリを実行するコードは何かを言わなかったので、理由を説明する方法はありません。 –

+0

@Jens、1つのMiniUsineに関連する1つのFluxに関連する1人のUserを得たので、私は1つを期待しています。コードは機能しますが、唯一の問題は文に関するものです – xNeyte

答えて

0

を返されることを期待する理由です。それがあなたを助けることを願っています。 HQL join

select mu 
from MiniUsine as mu 
inner join mu.fluxs as f 
left outer join f.users as u 
where u.userID = :id 
0

ので、このクエリはinner joinでクエリとしてSQLに変換され、inner joinの略称です。したがって、MiniUsineに関連するfluxesではなく、Userに関係しない場合は、結果はnullになります。 試すことができますleft join

select mu 
from MiniUsine mu 
left join mu.fluxs f 
left join f.users u 
where u.userID = :id 
関連する問題