Camel -Spring SQLException при использовании готовых операторов

Использование Camel 2.13.1 с Spring 2.7.11 и получение исключения SQL при попытке выполнить запрос на обновление с использованием компонента sql. Ниже показано, как мой запрос на обновление добавляется к маршруту, и я передаю значения входных параметров в эту инструкцию, используя java.util.Map в теле.

Основная проблема: если у меня есть только один входной параметр в подготовленном операторе, тогда он работает нормально.. если у меня есть несколько, как в приведенном ниже запросе на обновление, то происходит сбой с исключением 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: таблица или представление не существует

Примечание: нет проблем с подключением к базе данных и таблицей базы данных

3 ответа

В этом вопросе у кого-то была такая же ошибка. Он решает это путем изменения типа аргумента. Попробуйте проверить, если ваши аргументы в хороших типах. Попробуйте жестко закодировать все аргументы без одного, как вы пытаетесь, но измените не закодированный аргумент. Таким образом, вы можете определить, какой аргумент вызывает ошибку.

У меня тоже была такая же проблема, однако я нашел решение для нее.

sql:UPDATE myTable set key1=:#value1, key2=:#value2, key3=:#value3 where req1=CAST(:#reqValue1 as NCHAR(25))

Только в предложении where вы должны указать длину символов, указанную в запросе.

Дайте нам знать, если это решит и вашу проблему.

Другое: его работа у меня была та же проблема, и это решило ошибку

Мы столкнулись с той же проблемой с params. Наш сервер приложений был weblogic 12c. Странно, но понижение до 11g решило это.

Я надеюсь, что эта информация поможет вам!

Другие вопросы по тегам