如何使用camel-sql或camel-jdbc从INSERT获取生成的密钥

时间:2016-02-23 15:04:14

标签: apache-camel

我尝试从插入中获取生成的密钥。但我得到了oracle.sql.ROWID

<route id="myroute">
  <from uri="direct:myroute" />
  <camel:setHeader headerName="CamelSqlRetrieveGeneratedKeys">
    <simple>true</simple>
  </camel:setHeader>
  <to uri="sql-db:{{myquery}}"/>
</route>

我的SQL:

INSERT INTO MY_TABLE (ID, name, description) VALUES(MY_SEQUENCE.NEXTVAL, :#NAME, :#DESCRIPTION)

但是收到oracle.sql.ROWID。我的标题值:

{CamelSqlGeneratedKeyRows=[{ROWID=oracle.sql.ROWID@4e9adff2}], breadcrumbId=ID-VAIO-17584-1456233791521-0-9 ...

ROWID不是数字...来自行的地址:(有价值AABNPdAAOAAC0AOAAB

那么,如何使用camel-sql获取生成的密钥(序列值)?

我必须使用

  

从双

中选择MY_SEQUENCE.currval

? :(

感谢。

Camel 2.16.2 Spring 4.1.5 JDK 1.7-1.8 Oracle 11g

1 个答案:

答案 0 :(得分:0)

返回基本上是带Statement的preparedStatment返回。 RETURN_GENERATED_KEYS作为另一个参数,它可以检索生成的密钥。您可以使用普通的Java.sql准备语句运行查询并检查那里发生了什么。您应该能够在没有第二个查询的情况下获取详细信息。