NamedParameterJdbcTemplate无法执行插入到选择中

问题描述 投票:1回答:1

我正在使用informix,并且尝试使用spring从java执行一个简单查询。这是查询。

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);
  }
spring jdbc informix
1个回答
0
投票

[以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);
}

阅读本文章:why we use MapSqlParameterSource了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.