2014-04-08 60 views
0

我正在使用將映射xml文件映射到映射數組的數據映射器。雖然記錄我得到的結果如下:Mule - java.lang.ClassCastException:java.util.LinkedHashMap不能轉換爲java.util.List

[{Name=xyz, Salary=30000, Tax=1000}, {Name=BOS, Salary=200, Tax=75}] 

從上面生成的地圖,我試圖插入值到數據庫基於where子句。我的查詢看起來是這樣的:

UPDATE employee SET Salary =#[message.payload[0]['Salary']] WHERE name = #[message.payload[0]['Name']] 

在這裏我得到的例外它看起來像:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List 
at org.mvel2.optimizers.impl.refl.nodes.ListAccessor.getValue(ListAccessor.java:40) 
at org.mvel2.optimizers.impl.refl.nodes.GetterAccessor.getValue(GetterAccessor.java:40) 
at org.mvel2.optimizers.impl.refl.nodes.VariableAccessor.getValue(VariableAccessor.java:37) 
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything) 

在使用#登錄[message.payload [0] [ '工資']我正確地得到了與它相關的值。但查詢中的同一個表達式對我來說不起作用。

等待您的答覆。

謝謝。

回答

1

採取的第一項(或拆分陣列)使用查詢之前:

<set-payload value="#[payload[0]]" /> 

然後只使用地圖的有效載荷在查詢:

#[message.payload['Salary']] 
+0

那麼沒關係,但我米仍然困惑,爲什麼#[message.payload [0] ['工資']]不起作用。在記錄器中,它給了我關鍵「薪水」的正確值。 –

相關問題