在 apache Camel 中使用 In 子句

Using In clause in apache Camel

我正在使用 camel 2.17.0 并且必须使用 SQL IN 子句执行更新查询。查询是

update MY_TABLE set STATUS = :#status where ID in (:#in:ids) AND TYPE = :#type

我已经将所有参数设置为骆驼头,参数ids是一个List并且在我执行期间列表中有四个元素。但是我收到 sql 异常

PreparedStatementCallback; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; Number of parameters mismatch. 
Expected: 6, was: 4; nested exception is java.sql.SQLException: Number of parameters mismatch. Expected: 6, was: 4

我不确定哪里出了问题。当我硬编码除参数列表 id 之外的所有值时,我能够更新 table 而不会出现任何错误。修改后的查询就像

update MY_TABLE set  STATUS = 'SUCCESS' where ID in (:#in:corrIds) AND TYPE = 'type'

是否有任何规定,当我们使用 IN 子句时,我们不能在查询中提供任何其他参数?请指教

对于 in 子句,您需要在 2.18 上更新。但是,通过使用 2.17,只需将逗号分隔的字符串放入交换 header 中即可。它将自动映射。

请注意使用此技术进行的任何 SQL 注入。