在Spring2.7.11中使用Camel 2.13.1,并在尝试使用SQL组件运行更新查询时接收sql异常。下面是如何将我的update查询添加到路由中,并使用正文中的java.util.Map将输入参数值传递给它--语句。
的主要问题:如果在准备好的语句中只有一个输入param,那么它工作得很好。如果我有多个(如下面的更新查询所示),那么它将在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: table或view不存在 ]:org.apache.camel.RuntimeCamelException: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;错误的SQL语法[];嵌套异常为java.sql.SQLSyntaxErrorException: ORA-00942: table或view不存在。
注:数据库连接和数据库表没有问题
发布于 2015-10-13 09:56:39
在this question中,也有人犯了同样的错误。他通过改变论点类型来解决这个问题。如果你的论点很好的话,试着把它说出来。尝试在没有任何参数的情况下对所有参数进行硬编码,就像您尝试的那样,但不要更改硬编码参数。这样,您就可以确定哪个参数会导致错误。
发布于 2016-04-04 13:56:40
我们也面临着同样的问题。我们的应用服务器是weblogic 12c。奇怪,但降级到11克解决了这个问题。
我希望这个信息对你有帮助!
发布于 2017-08-11 10:15:52
我也有同样的问题,但是,我找到了解决办法。
sql:UPDATE myTable set key1=:#value1, key2=:#value2, key3=:#value3 where req1=CAST(:#reqValue1 as NCHAR(25))仅在where子句中,确保给出查询中看到的字符长度。
如果它也能解决你的问题,请告诉我们。
其他:它的工作,我也有同样的问题,这解决了错误
https://stackoverflow.com/questions/33024066
复制相似问题