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