Camel SQL组件:如何使用参数获取嵌套Map的值

时间:2015-05-25 10:27:41

标签: sql json apache-camel query-parameters

我是骆驼的新手。我试图使用SQL组件表达式的参数获取嵌套Map的值,但它失败了。

我有这个json(unmarshal to java.util.Map):

{ "username" : "john",
  "company" : { "companycode" : "stackoverflow.inc",
                "address" : "Street 12" }
}

我在Route构建器上有这个带有参数的SQL表达式:

...
.unmarshal().json(JsonLibrary.Jackson)
.to("sql:INSERT INTO user_tab VALUES (:#username, :#company.companycode)")
...

我能够获得用户名的价值,但我无法获得 companycode 的价值。做正确的方法是什么?谢谢。

1 个答案:

答案 0 :(得分:0)

根据:http://camel.apache.org/sql-component.html

  

从Camel 2.14开始,你可以使用Simple表达式作为参数,如下所示:

sql:select * from table where id=:#${property.myId} order by name[?options]

这项工作对我来说很好:

{guid=67, properties={last_seen=1472034553348, _type=business_service, name=Anna, created_at=1472033602648, status=USUNIĘTY}}

<to uri="dbSQL:insert into table_name ( guid,name,description,type,status,changedate,transid,transseq ) values ( :#${body[guid]}::integer, :#${body[properties][name]}, :#${body[properties][name]}, :#${body[properties][_type]}, :#${body[properties][staus]}, now(), 0, 0 )"/>