加入hql中的Where子句

时间:2017-01-18 07:04:57

标签: hibernate hql

我的SQL查询是

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 

1 个答案:

答案 0 :(得分:0)

tcd和tid未在您的hql查询中定义。 我认为你应该将你的hql建立在适当的实体上,这样就可以自动连接任何连接。

无论如何,在实体中定义了正确的@joinColumn属性之后,例如在Detail实体中应该有类似

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

你的hql查询应该成为:

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是否可行,这取决于您为这些列定义实体的方式。 另一种方法是使用hql本机查询,但我不推荐它。