Java MySQL中的参数索引超出范围(1>;参数个数,为0)

Java MySQL中的参数索引超出范围(1>;参数个数,为0),java,mysql,spring,model-view-controller,Java,Mysql,Spring,Model View Controller,我使用SpringMVC、Hibernate和Mysql,在我的工具中,我将sql文件称为outsite 这是我的刀: public List<RenterDto> searchByNamePersonalId(String name, String personalId) { Session session = sessionFactory.openSession(); String sqlString = GetSqlUtils.getSqlQueryString

我使用SpringMVC、Hibernate和Mysql,在我的工具中,我将sql文件称为outsite

这是我的刀:

public List<RenterDto> searchByNamePersonalId(String name, String personalId) {
    Session session = sessionFactory.openSession();
    String sqlString = GetSqlUtils.getSqlQueryString(RenterDaoImpl.class, SQL_DIR + SEARCH_BY_NAME_PERSON);
    List<RenterDto> list = new ArrayList<RenterDto>(0);
    try {
        Query query = session.createSQLQuery(sqlString);
        query.setParameter(0, name);
        query.setParameter(1, personalId);
        list = query.setResultTransformer(new AliasToBeanResultTransformer(RenterDto.class)).list();
    } catch (HibernateException e) {
        logger.error("error at RenterDaoImpl.searchByNameAddress: " + e.getMessage());
    } finally {
        session.close();
    }
    return list;
}
当我使用关键字“name”或“personalId”进行搜索时,我收到以下错误结果:

SqlExceptionHelper - SQL Error: 0, SQLState: S1009
SqlExceptionHelper - Parameter index out of range (1 > number of parameters, which is 0).
RenterDaoImpl - error at RenterDaoImpl.searchByNameAddress: could not execute query

如何解决这个问题?非常感谢你

您有以下表达式:

LIKE ('%'||'?')
我猜您希望
“?”
成为一个参数。但这是一个很低的字符串,只有一个问号

相反:

LIKE CONCAT('%', ?)
通常,在MySQL中,您希望使用
CONCAT()
进行字符串连接

LIKE CONCAT('%', ?)