2012-06-04 187 views
0

我必须从表中选择一些行,将结果发送到队列,然后将相同记录作为“发送”到数据库中。 这是我如何做到这一点,但不知道如何将列值传递给,其中子句的更新查询为select查询的每条记录。从选择查询中选择记录后更新查询

<route> 
<from uri="timer://kickoff?period=10000"/> 
    <setBody> 
     <constant>select top 10 * from tableName</constant> 
    </setBody> 
<to uri="jdbc:test"/> 
<multicast> 
     <to uri="activemq:queue:TESTQUEUE"/> 
     <setBody> 
      <constant>update tableName set status='Sent' where primaryKey= ${primaryKey}</constant> 
     </setBody> 
    <to uri="jdbc:test"/> 
</multicast> 
</route> 

此路线将运行所有10条记录吗?

如果JDBC/SQL组件无法实现,那么如何使用Hibernate组件实现它?

回答

0

当您使用Camel JDBC运行查询时,将返回一个ArrayList of HashMaps。见骆驼文档在这里:

http://camel.apache.org/jdbc.html

“的结果返回在OUT体作为一个ArrayList>列表对象包含行的列表和地图对象包含每一行与字符串键作为列名称“。

您将需要设置一个spring bean来处理这个主体。您可以从spring bean中的arraylist中提取主键并设置标题。从那里你可以使用分离器来处理所有行:

http://camel.apache.org/splitter.html