我收到此错误:ORA-00907:缺少右括号
使用这个HQL:
select new map(r,count(pt)) from Role r
inner join r.portfolioTeams pt
inner join pt.teamStatusTransitions ptst
inner join ptst.teamStatus tst
where pt.id.bankId = :bankId
and pt.id.networkDistributorId = :networkDistributorId
and ptst.id.startDate <= :startDate
and (ptst.endDate is null or ptst.endDate > :endDate)
and tst.id.teamStatusId in (:statusId)
and (r.id.cpmRoleId in (:roles) OR r.id.cpmRoleId in (:roles1) )
我检查过,没有遗漏的括号,我很确定它来自我的计数(pt)。
有什么想法吗?
由于
答案 0 :(得分:0)
执行查询时,可能不是所有变量(:bankId,:networkDistributorId,:startDate,:endDate,:statusId,:roles,:roles1)都被绑定了吗?
答案 1 :(得分:0)
感谢您的回答,
最后我在我的计数中使用关键字“元素”解决它,然后通过
分组select new map(r as roleKey,count(elements(pt)) as nbTeamKey) from Role r
inner join r.portfolioTeams pt
inner join pt.teamStatusTransitions ptst
inner join ptst.teamStatus tst
where pt.id.bankId = :bankId
and pt.id.networkDistributorId = :networkDistributorId
and ptst.id.startDate <= :startDate
and (ptst.endDate is null or ptst.endDate > :endDate)
and tst.id.teamStatusId in (:statusId) group by r
答案 2 :(得分:-1)
在为hibernate配置转动show_sql = true时你看到了什么?您是否尝试使用替换绑定参数直接在数据库上运行生成的脚本?
有时候,如果您没有正确使用引号(例如,在某些情况下您应该使用''而不是'),ORACLE之类的数据库会让您错过右括号错误,从而导致语法错误。