日期:2014-05-19  浏览次数:20675 次

org.hibernate.QueryParameterException: Position beyond number of declared ordina
org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1
我的查询语句是这样的,求解答。
Java code

List<Admin> list= this.getHibernateTemplate().find("from domain.Admin admin where admin.name =? and admin.password=?", admin.getName(),admin.getPassword());



------解决方案--------------------
admin.getName(),admin.getPassword() 你确定这俩个参数不为空么?


------解决方案--------------------
List<Admin> list= this.getHibernateTemplate().find("from domain.Admin admin where admin.name =? and admin.password=?", admin.getName(),admin.getPassword());

你用的那个版本 啊, 好像没这样 用的吧getHibernateTemplate().find(hql,param[])
------解决方案--------------------
源码是否是这个?
hibernate版本是 3.0.1
Java code

public List find(final String queryString, final Object... values) throws DataAccessException {
        return executeWithNativeSession(new HibernateCallback<List>() {
            public List doInHibernate(Session session) throws HibernateException {
                Query queryObject = session.createQuery(queryString);
                prepareQuery(queryObject);
                if (values != null) {
                    for (int i = 0; i < values.length; i++) {
                        queryObject.setParameter(i, values[i]);
                    }
                }
                return queryObject.list();
            }
        });
    }