0

MyBatis に小さな問題があります。Hashmap を繰り返し処理しようとしていますが、MyBatis ではそれができないようです。Hshmap の名前は serviceMap です。MyBatis foreach のコードは次のとおりです。

<foreach item="item" index="key" collection="serviceMap"  open="(" separator="or" close=")">
                (upper(p.ENDPOINT) like upper(#{key})
                and
                upper(p.ENDPOINT_OPERATION) like upper(#item))
</foreach>

例外は次のとおりです。

org.apache.ibatis.builder.BuilderException: Error evaluating expression 'serviceMap'. Return value ({vehicle=register}) was not iterable.
at org.apache.ibatis.builder.xml.dynamic.ExpressionEvaluator.evaluateIterable(ExpressionEvaluator.java:59)
at org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode.apply(ForEachSqlNode.java:51)
at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29)
at org.apache.ibatis.builder.xml.dynamic.IfSqlNode.apply(IfSqlNode.java:31)
at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29)

MyBatis では単にそれができないのでしょうか、それとも私がミスをしたのでしょうか?

誰かが私を助けることができれば、それは本当に素晴らしいことです.

どうもありがとう!ステファン

4

2 に答える 2

2

HashMap は反復可能ではありません。entrySet を繰り返す必要があります。

<foreach item="item" index="key" collection="serviceMap.entrySet"  open="(" separator="or" close=")">
            (upper(p.ENDPOINT) like upper(#{key})
            and
            upper(p.ENDPOINT_OPERATION) like upper(#item))

于 2013-09-17T12:28:35.627 に答える