最近出现了几次类似于Parameter XXX does not exist as a named parameter in[…..]的错误,排查起来也比较痛苦,这里记录下报错的原因:
1.查询条件:
searchCondition.append(" and t.certificateId =: certificateId");
这么写就会报错,=:符号必须紧跟后面的变量,需写成:
searchCondition.append(" and t.certificateId=:certificateId");
2.查询条件:
searchCondition.append(" and t.logStatus in (:logStatus)");
会报错,要写成
searchCondition.append(" and t.logStatus in(:logStatus)");
简单来说,就是在写hql的查询语句的时候,没事不要瞎加逗号,尤其是查询条件和值之间,否则hibernate在执行语句的时候就会报错