【问题标题】:Parameter index out of range (1 > number of parameters, which is 0) in MySQLMySQL中的参数索引超出范围(1>参数个数,即0)
【发布时间】:2017-05-21 21:57:57
【问题描述】:

我使用 Spring mvc、Hibernate 和 Mysql,在我的 DAOImplement 中调用 sql 文件。

这是我的 DAO:

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;
}

我的 SQL 名为 (SEARCH_BY_NAME_PERSON),用于搜索 name 和 personalId:

SELECT 
  R.ID, 
  R.NAME, 
  R.ACCOUNT_ID, 
  R.OTP_CODE, 
  R.OS_TYPE, 
  R.MANCHINID, 
  R.TYPE, 
  R.PERSONAL_ID, 
  R.PHONENUMBER, 
  R.EMAIL, 
  R.ADDRESS, 
  R.DISTRICT_ID, 
  D.NAME AS DISTRICT_NAME, 
  R.CITY_ID, 
  C.NAME AS CITY_NAME
FROM 
   RENTER R 
INNER JOIN 
   DISTRICT D 
ON 
   R.DISTRICT_ID = D.ID 
INNER JOIN 
   CITY C 
ON 
   R.CITY_ID = C.ID
WHERE 
   LOWER(R.NAME)
LIKE 
   ('%'||'?')
OR
   R.PERSONAL_ID
LIKE
   '%'||'%'

当我使用关键字“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

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

【问题讨论】:

    标签: java mysql spring model-view-controller


    【解决方案1】:

    你有这样的表达方式:

    LIKE ('%'||'?')
    

    我猜你希望'?' 成为一个参数。但它是一个低级字符串,只有一个问号。

    改为:

    LIKE CONCAT('%', ?)
    

    一般情况下,在 MySQL 中,您希望使用CONCAT() 进行字符串连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-19
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多