ordinal parameter mismatch

问题描述:

在hibernate发送hql查询语句的时候, 出现了以下错误:

 org.hibernate.HibernateException: ordinal parameter mismatch 


产生原因:

由于hql查询语句中含有"callXX"的列, hibernate在内部会进行判断, 做一些处理. (到底做了哪些处理, 偶也不知道; 同时也觉得没有必要知道这些处理是什么,

你只需要知道, 会对callxxx的列进行处理即可.) 导致了上面异常的发生.


解决方案:

把含有callxx的条件放到最前面;

如:

....
hql.append(" FROM tableName WHERE 1 = 1");
// 带call的列, 放到最前面
hql.append(" AND callxx = ? ");
params.add(Integer.parseInt(map.get("callxx")));
// 其他条件
hql.append(" AND columnName LIKE ? ");
params.add("%" + map.get("columnName") + "%");

...


你可能感兴趣的:(hibernate)