2017-08-08 63 views
0

异常: 引起:java.sql.SQLException:操作数应该包含1列 引起:org.hibernate。 exception.DataException:无法提取的ResultSetHibernate:引起:java.sql.SQLException:操作数应该包含1列

的HQL我写如下:

select sm from SystemMessage sm 
left join sm.systemMessageMaps smrm 
left join smrm.role r 
left join smrm.projectGroup pg 
left join smrm.assessmentVersion av 
left join smrm.severity sms 
where ((r.id is NULL) and (pg.id is NULL) and (av.id IN (:assesmentVersionID)) 
     or(pg.code =:projectGroup and av.id IN (:assesmentVersionID) and r.id is NULL) 
     or(r.name =:roleName AND av.id IN (:assesmentVersionID) and pg.id is NULL) 
     or(r.name =:roleName and pg.code =:projectGroup AND av.id IN (:assesmentVersionID)) 
     ) and 
     ((sm.startDate is null or sm.startDate <= current_timestamp) and (sm.endDate is null or sm.endDate >= current_timestamp)) 
order by sms.priority,smrm.severityRank,sm.startDate 

我碰巧得到这个异常后,我在加入子句参数:

av.id IN (:assesmentVersionID) 

,我设置的参数值

query.setParameterList("assesmentVersionID", assessmentVersionIDList); 

我不知道我在哪里出了问题!

+0

我使用的Hibernate和BatchPreparedStatementSetter是由JdbcTemplate类使用的批量更新回调接口。听起来不相关吗? – NehalM

+0

是的,很抱歉,删除了评论 – OutOfMind

回答

0

尝试删除括号:

select sm from SystemMessage sm 
left join sm.systemMessageMaps smrm 
left join smrm.role r 
left join smrm.projectGroup pg 
left join smrm.assessmentVersion av 
left join smrm.severity sms 
where ((r.id is NULL) and (pg.id is NULL) and av.id IN (:assesmentVersionID) 
     or(pg.code =:projectGroup and av.id IN (:assesmentVersionID) and r.id is NULL) 
     or(r.name =:roleName AND av.id IN (:assesmentVersionID) and pg.id is NULL) 
     or(r.name =:roleName and pg.code =:projectGroup AND av.id IN (:assesmentVersionID)) 
     ) and 
     ((sm.startDate is null or sm.startDate <= current_timestamp) and (sm.endDate is null or sm.endDate >= current_timestamp)) 
order by sms.priority,smrm.severityRank,sm.startDate 

这应该工作,如果不尝试从(:assesmentVersionID)删除括号太多。

让我知道它是否解决了这个问题。

相关问题