Как передать несколько именованных параметров в Spring JdbcTemplate?

У меня есть следующий код в Spring Dao, который отлично работает-

Object args[] = { userId, restaurantId };
int userOrderCount = getJdbcTemplate()
   .queryForInt(
         "SELECT COUNT(orderid) FROM orders WHERE useridfk_order = ? AND restaurantidfk_order = ?", 
         args
    );

Однако, если я решу использовать NamedParameters для моего запроса следующим образом-

int userOrderCount = getNamedParameterJdbcTemplate()
   .queryForInt(
         "SELECT COUNT(orderid) FROM orders WHERE useridfk_order = :userId AND restaurantidfk_order = :restaurantId", 
         new MapSqlParameterSource(":restaurantId", restaurantId)
            .addValue(":userId", userId)
    );

Я получаю это исключение-

org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'userId': No value registered for key 'userId'.

Я знаю золотую пословицу «Не чини, если это не сломано»

Но все же я не могу не задаться вопросом, почему это происходит?

9
задан Jens Schauder 29 August 2014 в 12:28
поделиться