2012-06-04 185 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