Эта трассировка стека происходит от компонента camel-jdbc
. Этот компонент использует стандартный JDBC API, поэтому он требует некоторых ограничений. Одним из них является то, что вы не можете передать коллекцию как один параметр .
В Camel вы можете реализовать пользовательские JdbcPrepareStatementStrategy , зарегистрировать его с помощью параметра uri prepareStatementStrategy, чтобы обеспечить собственную логику анализа запроса, но я бы не советовал. Это может привести к большому количеству ловушек.
Лучше использовать camel-sql
компонент, который использует spring-jdbc
и допускает это изначально, начиная с Apache Camel 2.17.
Пример с постоянно подготовленным оператором:
from("direct:deleteIds")
.to("sql:DELETE FROM TABLE_NAME WHERE ID IN (:#in:idSet)");
Пример с оператором, созданным из тела:
from("direct:deleteIds")
.setBody(simple("DELETE FROM TABLE_NAME WHERE ID IN (:?in:idSet)")) // Note questionmark here for specifying parameter. This is difference against query in uri.
.to("direct:executeQuery");
from("direct:executeQuery")
.setHeader(SqlConstants.SQL_QUERY, body())
.to("sql:dummy?dataSource=#datasource");