2017-01-18 2 views
0

私のSQLクエリがHQLでの句が

select count(tid) from admin.details tcd 
inner join admin.module tm on tcd.moduleid=tm.module where 
tm.bankid=1234 and roundid=2 and tm.status=true 

がどのようにHQL使用して同じ出力を得ることですどこに参加?

私はこれを試しました。構文エラーが発生しました

select count(tid) from Details d join tcd.Module m 
with d.moduleId=m.moduleId 
where d.bankDetails.bankId = :bid 
and d.roundMaster.roundId = :rid and m.status=:pid 
+0

エラーを投稿できますか? – Sreemat

+0

プロパティtcd.Moduleを解決できませんでした – vimal

答えて

0

tcdとtidがhqlクエリで定義されていません。 私は適切なエンティティにあなたのhqlの基礎を置くべきだと思います。この方法では、どのような結合も自動的に達成されます。とにかく、エンティティで正しい@joinColumnプロパティを定義した後、たとえば、次のようになります。

select count(tid) from Details d 
where d.bankDetails.bankId = :bid 
and d.roundMaster.roundId = :rid 
and d.moduleId.status= :pid 

d.bankDetails.bankIdとd.roundMaster.roundIdが働くことができれば、私は知りませんが、それは異なります。詳細エンティティに

@JoinColumn(name = "Detail_Module_Id", referencedColumnName = "Module_Id") 
private Module moduleId; 

あなたのHQLクエリのようなものになるはずですがあるはずですこれらの列に対してエンティティがどのように定義されているかについて説明します。 もう1つの方法は、hqlネイティブクエリを使用することですが、推奨しません。