Hibernate:ORA-00907:缺少右括号

时间:2015-08-05 12:30:32

标签: java oracle hibernate hql

我收到此错误: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)。

有什么想法吗?

由于

3 个答案:

答案 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之类的数据库会让您错过右括号错误,从而导致语法错误。