我的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
答案 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本机查询,但我不推荐它。