使用预准备语句时Camel -Spring SQLException

时间:2015-10-08 19:10:35

标签: spring apache-camel camel-jdbc

将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 个答案:

答案 0 :(得分:0)

this question中有人有同样的错误。他通过改变参数类型来解决它。如果你的论点是好的类型,请尝试werify。尝试硬编码所有参数,没有像你尝试的那样,但改变不是硬编码的参数。这样您就可以确定哪个参数导致错误。

答案 1 :(得分:0)

我们遇到了与params相同的问题。我们的应用服务器是weblogic 12c。奇怪,但降级到11g解决了这个问题。

我希望此信息可以帮助您!

答案 2 :(得分:0)

我也有同样的问题,但是,我找到了解决方案。

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

仅在where子句中,请确保提供查询中显示的字符长度。

如果它也解决了您的问题,请告诉我们。

其他: 它的工作我有同样的问题,这解决了错误