Обновление NamedParameterJdbcTemplate с несколькими полями для обновления

#java #mysql #sql #spring

#java #mysql #sql #spring

Вопрос:

Пытаюсь обновить значения нескольких столбцов в таблице.
Чего мне не хватает, небольшая помощь!

dao Метод похож…
В dao плане класса все поля заполнены соответствующими данными.

  public void updatePlan(Plan plan) {
    SqlParameterSource mapSqlParameterSource = new MapSqlParameterSource().addValue("id", plan.getId())
            .addValue("plan_name", plan.getPlan())
            .addValue("price_category", plan.getPrice_category())
            .addValue("updated_by", subscriptionPlan.getId());

    String UPDATE_PLAN = "UPDATE plan_table SET(plan_name= :plan_name, price_category= :price_category, updated_by= :id) where id=:id)";

    SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(subscriptionPlan);
    namedParameterJdbcTemplate.update(UPDATE_PLAN, mapSqlParameterSource);
}
  

Ошибка заключается в…(База данных MySQL — 5.6.43, Workbench — 6.3.9)

org.springframework.jdbc.BadSqlGrammarException:

PreparedStatementCallback; неправильная грамматика SQL [обновить webstat_plan set (plan_name= ?, price_category= ?, updated_by= ?), где id=?)]; вложенным исключением является com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:

У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на наличие правильного синтаксиса….

Комментарии:

1. Вы пытались выполнить инструкцию SQL (конечно, с реальными значениями вместо заполнителя)? Это может помочь найти проблемы с синтаксисом.

2. спасибо …. за предложение. помогло. Это так глупо с моей стороны. Хотя скобка после SET не требуется для каждого высказывания.

Ответ №1:

Проблема связана с вашим SQL-запросом. При обновлении таблицы скобки не требуются.

Обновите свой запрос с помощью

ОБНОВЛЕНИЕ plann_table УСТАНОВИТЕ plan_name= :plan_name, price_category= :price_category, updated_by= :id где id=:id

Комментарии:

1. Что такое журнал ошибок, пожалуйста, отформатируйте и улучшите свой вопрос, если хотите от кого-нибудь помощи.