2014-04-08 5 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] [ 'Salary']]가 작동하지 않습니다. 로거에서 키 "급여"에 대한 올바른 값을 제공합니다. –