Spring 2.7.11 で Camel 2.13.1 を使用し、SQL コンポーネントを使用して更新クエリを実行しようとすると SQL 例外を受け取ります。以下は、更新クエリをルートに追加する方法です。本文で java.util.Map を使用して、入力パラメーター値をこのステートメントに渡します。
主な問題:準備されたステートメントに入力パラメーターが1つしかない場合、正常に動作します..以下の更新クエリのように複数ある場合、SQL例外で失敗します
<route id="ABC" >
<from uri="direct:sqlInsert" />
<process ref="sqlProcessor" />
<to uri="sql:UPDATE myTable set key1=:#value1, key2=:#value2, key3=:#value3 where req1=:#reqValue1" />
</route>
camel-JDBC を使用しても同じ問題に直面する
<route id="ABC" >
<from uri="direct:sqlInsert" />
<process ref="sqlProcessor" />
<setBody>
<constant>UPDATE myTable set key1=:?value1, key2=:?value2, key3=:?value3 where req1=:?reqValue1</constant>
</setBody>
<to uri="jdbc:customDatasource?useHeadersAsParameters=true" />
</route>
これは、私がいつも目にする SQL 例外です。
JMS メッセージ リスナーの実行に失敗しました。原因: [ org.apache.camel.RuntimeCamelException - org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 不適切な SQL 文法 []; ネストされた例外は java.sql.SQLSyntaxErrorException: ORA-00942: テーブルまたはビューが存在しません ]: org.apache.camel.RuntimeCamelException: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 不適切な SQL 文法 []; ネストされた例外は java.sql.SQLSyntaxErrorException: ORA-00942: テーブルまたはビューが存在しません
注: データベース接続とデータベース テーブルに問題はありません