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을 기반으로해야한다고 생각한다. 이런 식으로 모든 join은 자동적으로 도달 할 것이다.

어쨌든 엔티티에서 올바른 @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 질의와 같은 뭔가가되어야이 있어야한다 이 항목에 대한 엔티티 정의 방법 또 다른 방법은 hql 네이티브 쿼리를 사용하는 것이지만 권장하지 않습니다.