apache.Camel: Как задать fetchSize, если используется useHeadersAsParameters

При использовании apache.Camel JDBC работал со следующим кодом:

.to("jdbc:dataSource?statement.fetchSize=1000")

Проблема в том, что под капотом там создается обычный Statement.

Сейчас мне необходимо, чтобы создавался PreparedStatement, для этого использую следующий код:

.to("jdbc:dataSource?useHeadersAsParameters=true&statement.fetchSize=1000")

Захожу дебагом в класс org.apache.camel.component.jdbc.JdbcProducer, вижу, что создается PreparedStatement, но getFetchSize у него возвращает 10, а не 1000.

Также пробывал следующий код:

.setHeader("fetchSize", () -> 1000)
.to("jdbc:dataSource?useHeadersAsParameters=true")

Причем, пробывал как fetchSize, так и statement.fetchSize

Также пробывал следующий код:

.setHeader(JdbcConstants.JDBC_PARAMETERS, () -> Collections.singletonMap("fetchSize", 1000))
.to("jdbc:dataSource?useHeadersAsParameters=true")

Ни один из вариантов не выставляет нужный fetchSize. Если залезть в код org.apache.camel.component.jdbc.JdbcProducer, то для меня вообще не очевидно, где выставляются всякие параметры, не относящиеся к самому sql запросу, в отличии от обычного Statement. Видел предложение создать свой класс-наследник от org.apache.camel.component.jdbc.DefaultJdbcPrepareStatementStrategy, но ощущение, что можно сделать проще и я не понимаю, как свою стратегию передать в .to.

Может быть кто-то сталкивался с похожей ситуацией и знает, как правильно передать fetchSize, при использовании useHeaderAsParamenters? В качестве БД используется Oracle 12

Версии:

org.apache.camel camel-jdbc 2.24.3
com.oracle.database.jdbc ojdbc8 12.2.0.1

Ответы (0 шт):