NamedParameterJdbcTemplate 无法执行 insert into select
Posted
技术标签:
【中文标题】NamedParameterJdbcTemplate 无法执行 insert into select【英文标题】:NamedParameterJdbcTemplate cannot execute insert into select 【发布时间】:2020-02-21 02:26:07 【问题描述】:我正在使用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);
【问题讨论】:
可以添加异常的stacktrace吗? 【参考方案1】:尝试使用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 了解更多信息。
【讨论】:
以上是关于NamedParameterJdbcTemplate 无法执行 insert into select的主要内容,如果未能解决你的问题,请参考以下文章