我是骆驼的新手。我试图使用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 的价值。做正确的方法是什么?谢谢。
答案 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
)"/>