NamedParameterJdbcTemplate не может выполнить вставку в select - PullRequest
1 голос
/ 21 февраля 2020

Я использую informix и пытаюсь выполнить простой запрос из java, используя spring. Это запрос.

INSERT INTO table1
SELECT val1, val2, val3
FROM table2
WHERE condition

Я проверил синтаксис запроса и, если он выполняется с помощью клиента, работает отлично. Но когда он запускается с использованием NamedParameterJdbcTemplate выдает синтаксическую ошибку, и я не знаю почему. Кто-нибудь может объяснить мне причины и хороший способ решить мою проблему.

Это мой java код.

String LOG_INFO = 
   "INSERT INTO table1 SELECT val1,  val2,  (SYSDATE - 5 UNITS HOUR),  val3 " +
   " FROM table2 " +
   " WHERE membership_nbr = :user_nbr_param";
String USER_NBR_PARAM = "user_nbr_param";

@Autowired
  private NamedParameterJdbcTemplate jdbcTemplate;

public Integer logInfo(BigInteger userNbr) {
    MapSqlParameterSource params = new MapSqlParameterSource();
    params.addValue(USER_NBR_PARAM, userNbr);

    return jdbcTemplate.update(LOG_INFO, params);
  }

1 Ответ

0 голосов
/ 21 февраля 2020

Попробуйте, взяв Map вместо MapSqlParameterSource:

public Integer logInfo(BigInteger userNbr) {
    Map<String, Object> params = new HashMap<>();
    params.put(USER_NBR_PARAM, userNbr);
    return jdbcTemplate.update(LOG_INFO, params);
}

Прочитайте это: почему мы используем MapSqlParameterSource для получения дополнительной информации.

...